summaryrefslogtreecommitdiff
authoralwin <alwin>2004-02-24 02:49:02 (UTC)
committer alwin <alwin>2004-02-24 02:49:02 (UTC)
commit7fd2bb984be7f227902374e1033d73780d6ffe3a (patch) (unidiff)
tree4f952e10f5d4aced550810baf0b51328b7d99a9a
parentf196130d43642f2397ddadeed72e3ea062cda281 (diff)
downloadopie-7fd2bb984be7f227902374e1033d73780d6ffe3a.zip
opie-7fd2bb984be7f227902374e1033d73780d6ffe3a.tar.gz
opie-7fd2bb984be7f227902374e1033d73780d6ffe3a.tar.bz2
changed keyword "autocheck" to "check" in checkStorage()
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--library/global.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/library/global.cpp b/library/global.cpp
index 6182de8..4aca08b 100644
--- a/library/global.cpp
+++ b/library/global.cpp
@@ -1,577 +1,577 @@
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 <qpe/qpedebug.h> 21#include <qpe/qpedebug.h>
22#include <qpe/global.h> 22#include <qpe/global.h>
23#include <qpe/qdawg.h> 23#include <qpe/qdawg.h>
24#include <qpe/qpeapplication.h> 24#include <qpe/qpeapplication.h>
25#include <qpe/resource.h> 25#include <qpe/resource.h>
26#include <qpe/storage.h> 26#include <qpe/storage.h>
27#include <qpe/applnk.h> 27#include <qpe/applnk.h>
28#include <qpe/qcopenvelope_qws.h> 28#include <qpe/qcopenvelope_qws.h>
29#include <qpe/config.h> 29#include <qpe/config.h>
30 30
31#include <qfile.h> 31#include <qfile.h>
32#include <qlabel.h> 32#include <qlabel.h>
33#include <qtimer.h> 33#include <qtimer.h>
34#include <qmap.h> 34#include <qmap.h>
35#include <qdict.h> 35#include <qdict.h>
36#include <qdir.h> 36#include <qdir.h>
37#include <qmessagebox.h> 37#include <qmessagebox.h>
38#include <qregexp.h> 38#include <qregexp.h>
39 39
40#include <stdlib.h> 40#include <stdlib.h>
41#include <sys/stat.h> 41#include <sys/stat.h>
42#include <sys/wait.h> 42#include <sys/wait.h>
43#include <sys/types.h> 43#include <sys/types.h>
44#include <fcntl.h> 44#include <fcntl.h>
45#include <unistd.h> 45#include <unistd.h>
46#include <errno.h> 46#include <errno.h>
47 47
48#include <qwindowsystem_qws.h> // for qwsServer 48#include <qwindowsystem_qws.h> // for qwsServer
49#include <qdatetime.h> 49#include <qdatetime.h>
50 50
51#include <qfile.h> 51#include <qfile.h>
52 52
53namespace { 53namespace {
54 // checks if the storage should be searched 54 // checks if the storage should be searched
55 bool checkStorage(const QString &path ){ // this is a small Config replacement cause config is too limited -zecke 55 bool checkStorage(const QString &path ){ // this is a small Config replacement cause config is too limited -zecke
56 QFile file(path ); 56 QFile file(path );
57 if(!file.open(IO_ReadOnly ) ) 57 if(!file.open(IO_ReadOnly ) )
58 return true; 58 return true;
59 59
60 QByteArray array = file.readAll(); 60 QByteArray array = file.readAll();
61 QStringList list = QStringList::split('\n', QString( array ) ); 61 QStringList list = QStringList::split('\n', QString( array ) );
62 for(QStringList::Iterator it = list.begin(); it != list.end(); ++it ){ 62 for(QStringList::Iterator it = list.begin(); it != list.end(); ++it ){
63 if( (*it).startsWith("autocheck = 0" ) ){ 63 if( (*it).startsWith("check = 0" ) ){
64 return false; 64 return false;
65 }else if( (*it).startsWith("autocheck = 1" ) ){ 65 }else if( (*it).startsWith("check = 1" ) ){
66 return true; 66 return true;
67 } 67 }
68 } 68 }
69 return true; 69 return true;
70 } 70 }
71} 71}
72 72
73//#include "quickexec_p.h" 73//#include "quickexec_p.h"
74 74
75class Emitter : public QObject { 75class Emitter : public QObject {
76 Q_OBJECT 76 Q_OBJECT
77public: 77public:
78 Emitter( QWidget* receiver, const QString& document ) 78 Emitter( QWidget* receiver, const QString& document )
79 { 79 {
80 connect(this, SIGNAL(setDocument(const QString&)), 80 connect(this, SIGNAL(setDocument(const QString&)),
81 receiver, SLOT(setDocument(const QString&))); 81 receiver, SLOT(setDocument(const QString&)));
82 emit setDocument(document); 82 emit setDocument(document);
83 disconnect(this, SIGNAL(setDocument(const QString&)), 83 disconnect(this, SIGNAL(setDocument(const QString&)),
84 receiver, SLOT(setDocument(const QString&))); 84 receiver, SLOT(setDocument(const QString&)));
85 } 85 }
86 86
87signals: 87signals:
88 void setDocument(const QString&); 88 void setDocument(const QString&);
89}; 89};
90 90
91 91
92class StartingAppList : public QObject { 92class StartingAppList : public QObject {
93 Q_OBJECT 93 Q_OBJECT
94public: 94public:
95 static void add( const QString& name ); 95 static void add( const QString& name );
96 static bool isStarting( const QString name ); 96 static bool isStarting( const QString name );
97private slots: 97private slots:
98 void handleNewChannel( const QString &); 98 void handleNewChannel( const QString &);
99private: 99private:
100 StartingAppList( QObject *parent=0, const char* name=0 ) ; 100 StartingAppList( QObject *parent=0, const char* name=0 ) ;
101 101
102 QDict<QTime> dict; 102 QDict<QTime> dict;
103 static StartingAppList *appl; 103 static StartingAppList *appl;
104}; 104};
105 105
106StartingAppList* StartingAppList::appl = 0; 106StartingAppList* StartingAppList::appl = 0;
107 107
108StartingAppList::StartingAppList( QObject *parent, const char* name ) 108StartingAppList::StartingAppList( QObject *parent, const char* name )
109 :QObject( parent, name ) 109 :QObject( parent, name )
110{ 110{
111#if QT_VERSION >= 232 && defined(QWS) 111#if QT_VERSION >= 232 && defined(QWS)
112 connect( qwsServer, SIGNAL( newChannel(const QString&)), 112 connect( qwsServer, SIGNAL( newChannel(const QString&)),
113 this, SLOT( handleNewChannel(const QString&)) ); 113 this, SLOT( handleNewChannel(const QString&)) );
114#endif 114#endif
115 dict.setAutoDelete( TRUE ); 115 dict.setAutoDelete( TRUE );
116} 116}
117 117
118void StartingAppList::add( const QString& name ) 118void StartingAppList::add( const QString& name )
119{ 119{
120#if QT_VERSION >= 232 && !defined(QT_NO_COP) 120#if QT_VERSION >= 232 && !defined(QT_NO_COP)
121 if ( !appl ) 121 if ( !appl )
122 appl = new StartingAppList; 122 appl = new StartingAppList;
123 QTime *t = new QTime; 123 QTime *t = new QTime;
124 t->start(); 124 t->start();
125 appl->dict.insert( "QPE/Application/" + name, t ); 125 appl->dict.insert( "QPE/Application/" + name, t );
126#endif 126#endif
127} 127}
128 128
129bool StartingAppList::isStarting( const QString name ) 129bool StartingAppList::isStarting( const QString name )
130{ 130{
131#if QT_VERSION >= 232 && !defined(QT_NO_COP) 131#if QT_VERSION >= 232 && !defined(QT_NO_COP)
132 if ( appl ) { 132 if ( appl ) {
133 QTime *t = appl->dict.find( "QPE/Application/" + name ); 133 QTime *t = appl->dict.find( "QPE/Application/" + name );
134 if ( !t ) 134 if ( !t )
135 return FALSE; 135 return FALSE;
136 if ( t->elapsed() > 10000 ) { 136 if ( t->elapsed() > 10000 ) {
137 // timeout in case of crash or something 137 // timeout in case of crash or something
138 appl->dict.remove( "QPE/Application/" + name ); 138 appl->dict.remove( "QPE/Application/" + name );
139 return FALSE; 139 return FALSE;
140 } 140 }
141 return TRUE; 141 return TRUE;
142 } 142 }
143#endif 143#endif
144 return FALSE; 144 return FALSE;
145} 145}
146 146
147void StartingAppList::handleNewChannel( const QString & name ) 147void StartingAppList::handleNewChannel( const QString & name )
148{ 148{
149#if QT_VERSION >= 232 && !defined(QT_NO_COP) 149#if QT_VERSION >= 232 && !defined(QT_NO_COP)
150 dict.remove( name ); 150 dict.remove( name );
151#endif 151#endif
152} 152}
153 153
154static bool docDirCreated = FALSE; 154static bool docDirCreated = FALSE;
155static QDawg* fixed_dawg = 0; 155static QDawg* fixed_dawg = 0;
156static QDict<QDawg> *named_dawg = 0; 156static QDict<QDawg> *named_dawg = 0;
157 157
158static QString qpeDir() 158static QString qpeDir()
159{ 159{
160 QString dir = getenv("OPIEDIR"); 160 QString dir = getenv("OPIEDIR");
161 if ( dir.isEmpty() ) dir = ".."; 161 if ( dir.isEmpty() ) dir = "..";
162 return dir; 162 return dir;
163} 163}
164 164
165static QString dictDir() 165static QString dictDir()
166{ 166{
167 return qpeDir() + "/etc/dict"; 167 return qpeDir() + "/etc/dict";
168} 168}
169 169
170/*! 170/*!
171 \class Global global.h 171 \class Global global.h
172 \brief The Global class provides application-wide global functions. 172 \brief The Global class provides application-wide global functions.
173 173
174 The Global functions are grouped as follows: 174 The Global functions are grouped as follows:
175 \tableofcontents 175 \tableofcontents
176 176
177 \section1 User Interface 177 \section1 User Interface
178 178
179 The statusMessage() function provides short-duration messages to the 179 The statusMessage() function provides short-duration messages to the
180 user. The showInputMethod() function shows the current input method, 180 user. The showInputMethod() function shows the current input method,
181 and hideInputMethod() hides the input method. 181 and hideInputMethod() hides the input method.
182 182
183 \section1 Document related 183 \section1 Document related
184 184
185 The findDocuments() function creates a set of \link doclnk.html 185 The findDocuments() function creates a set of \link doclnk.html
186 DocLnk\endlink objects in a particular folder. 186 DocLnk\endlink objects in a particular folder.
187 187
188 \section1 Filesystem related 188 \section1 Filesystem related
189 189
190 Global provides an applicationFileName() function that returns the 190 Global provides an applicationFileName() function that returns the
191 full path of an application-specific file. 191 full path of an application-specific file.
192 192
193 The execute() function runs an application. 193 The execute() function runs an application.
194 194
195 \section1 Word list related 195 \section1 Word list related
196 196
197 A list of words relevant to the current locale is maintained by the 197 A list of words relevant to the current locale is maintained by the
198 system. The list is held in a \link qdawg.html DAWG\endlink 198 system. The list is held in a \link qdawg.html DAWG\endlink
199 (implemented by the QDawg class). This list is used, for example, by 199 (implemented by the QDawg class). This list is used, for example, by
200 the pickboard input method. 200 the pickboard input method.
201 201
202 The global QDawg is returned by fixedDawg(); this cannot be updated. 202 The global QDawg is returned by fixedDawg(); this cannot be updated.
203 An updatable copy of the global QDawg is returned by addedDawg(). 203 An updatable copy of the global QDawg is returned by addedDawg().
204 Applications may have their own word lists stored in \l{QDawg}s 204 Applications may have their own word lists stored in \l{QDawg}s
205 which are returned by dawg(). Use addWords() to add words to the 205 which are returned by dawg(). Use addWords() to add words to the
206 updateable copy of the global QDawg or to named application 206 updateable copy of the global QDawg or to named application
207 \l{QDawg}s. 207 \l{QDawg}s.
208 208
209 \section1 Quoting 209 \section1 Quoting
210 210
211 The shellQuote() function quotes a string suitable for passing to a 211 The shellQuote() function quotes a string suitable for passing to a
212 shell. The stringQuote() function backslash escapes '\' and '"' 212 shell. The stringQuote() function backslash escapes '\' and '"'
213 characters. 213 characters.
214 214
215 \section1 Hardware 215 \section1 Hardware
216 216
217 The implementation of the writeHWClock() function depends on the AlarmServer 217 The implementation of the writeHWClock() function depends on the AlarmServer
218 implementation. If the AlarmServer is using atd the clock will be synced to 218 implementation. If the AlarmServer is using atd the clock will be synced to
219 hardware. If opie-alarm is used the hardware clock will be synced before 219 hardware. If opie-alarm is used the hardware clock will be synced before
220 suspending the device. opie-alarm is used by iPAQ and Zaurii implementation 220 suspending the device. opie-alarm is used by iPAQ and Zaurii implementation
221 221
222 \ingroup qtopiaemb 222 \ingroup qtopiaemb
223*/ 223*/
224 224
225/*! 225/*!
226 \internal 226 \internal
227*/ 227*/
228Global::Global() 228Global::Global()
229{ 229{
230} 230}
231 231
232/*! 232/*!
233 Returns the unchangeable QDawg that contains general 233 Returns the unchangeable QDawg that contains general
234 words for the current locale. 234 words for the current locale.
235 235
236 \sa addedDawg() 236 \sa addedDawg()
237*/ 237*/
238const QDawg& Global::fixedDawg() 238const QDawg& Global::fixedDawg()
239{ 239{
240 if ( !fixed_dawg ) { 240 if ( !fixed_dawg ) {
241 if ( !docDirCreated ) 241 if ( !docDirCreated )
242 createDocDir(); 242 createDocDir();
243 243
244 fixed_dawg = new QDawg; 244 fixed_dawg = new QDawg;
245 QString dawgfilename = dictDir() + "/dawg"; 245 QString dawgfilename = dictDir() + "/dawg";
246 QString words_lang; 246 QString words_lang;
247 QStringList langs = Global::languageList(); 247 QStringList langs = Global::languageList();
248 for (QStringList::ConstIterator it = langs.begin(); it!=langs.end(); ++it) { 248 for (QStringList::ConstIterator it = langs.begin(); it!=langs.end(); ++it) {
249 QString lang = *it; 249 QString lang = *it;
250 words_lang = dictDir() + "/words." + lang; 250 words_lang = dictDir() + "/words." + lang;
251 QString dawgfilename_lang = dawgfilename + "." + lang; 251 QString dawgfilename_lang = dawgfilename + "." + lang;
252 if ( QFile::exists(dawgfilename_lang) || 252 if ( QFile::exists(dawgfilename_lang) ||
253 QFile::exists(words_lang) ) { 253 QFile::exists(words_lang) ) {
254 dawgfilename = dawgfilename_lang; 254 dawgfilename = dawgfilename_lang;
255 break; 255 break;
256 } 256 }
257 } 257 }
258 QFile dawgfile(dawgfilename); 258 QFile dawgfile(dawgfilename);
259 259
260 if ( !dawgfile.exists() ) { 260 if ( !dawgfile.exists() ) {
261 QString fn = dictDir() + "/words"; 261 QString fn = dictDir() + "/words";
262 if ( QFile::exists(words_lang) ) 262 if ( QFile::exists(words_lang) )
263 fn = words_lang; 263 fn = words_lang;
264 QFile in(fn); 264 QFile in(fn);
265 if ( in.open(IO_ReadOnly) ) { 265 if ( in.open(IO_ReadOnly) ) {
266 fixed_dawg->createFromWords(&in); 266 fixed_dawg->createFromWords(&in);
267 dawgfile.open(IO_WriteOnly); 267 dawgfile.open(IO_WriteOnly);
268 fixed_dawg->write(&dawgfile); 268 fixed_dawg->write(&dawgfile);
269 dawgfile.close(); 269 dawgfile.close();
270 } 270 }
271 } else { 271 } else {
272 fixed_dawg->readFile(dawgfilename); 272 fixed_dawg->readFile(dawgfilename);
273 } 273 }
274 } 274 }
275 275
276 return *fixed_dawg; 276 return *fixed_dawg;
277} 277}
278 278
279/*! 279/*!
280 Returns the changeable QDawg that contains general 280 Returns the changeable QDawg that contains general
281 words for the current locale. 281 words for the current locale.
282 282
283 \sa fixedDawg() 283 \sa fixedDawg()
284*/ 284*/
285const QDawg& Global::addedDawg() 285const QDawg& Global::addedDawg()
286{ 286{
287 return dawg("local"); 287 return dawg("local");
288} 288}
289 289
290/*! 290/*!
291 Returns the QDawg with the given \a name. 291 Returns the QDawg with the given \a name.
292 This is an application-specific word list. 292 This is an application-specific word list.
293 293
294 \a name should not contain "/". 294 \a name should not contain "/".
295*/ 295*/
296const QDawg& Global::dawg(const QString& name) 296const QDawg& Global::dawg(const QString& name)
297{ 297{
298 createDocDir(); 298 createDocDir();
299 if ( !named_dawg ) 299 if ( !named_dawg )
300 named_dawg = new QDict<QDawg>; 300 named_dawg = new QDict<QDawg>;
301 QDawg* r = named_dawg->find(name); 301 QDawg* r = named_dawg->find(name);
302 if ( !r ) { 302 if ( !r ) {
303 r = new QDawg; 303 r = new QDawg;
304 named_dawg->insert(name,r); 304 named_dawg->insert(name,r);
305 QString dawgfilename = applicationFileName("Dictionary", name ) + ".dawg"; 305 QString dawgfilename = applicationFileName("Dictionary", name ) + ".dawg";
306 QFile dawgfile(dawgfilename); 306 QFile dawgfile(dawgfilename);
307 if ( dawgfile.open(IO_ReadOnly) ) 307 if ( dawgfile.open(IO_ReadOnly) )
308 r->readFile(dawgfilename); 308 r->readFile(dawgfilename);
309 } 309 }
310 return *r; 310 return *r;
311} 311}
312 312
313/*! 313/*!
314 \overload 314 \overload
315 Adds \a wordlist to the addedDawg(). 315 Adds \a wordlist to the addedDawg().
316 316
317 Note that the addition of words persists between program executions 317 Note that the addition of words persists between program executions
318 (they are saved in the dictionary files), so you should confirm the 318 (they are saved in the dictionary files), so you should confirm the
319 words with the user before adding them. 319 words with the user before adding them.
320*/ 320*/
321void Global::addWords(const QStringList& wordlist) 321void Global::addWords(const QStringList& wordlist)
322{ 322{
323 addWords("local",wordlist); 323 addWords("local",wordlist);
324} 324}
325 325
326/*! 326/*!
327 \overload 327 \overload
328 Adds \a wordlist to the addedDawg(). 328 Adds \a wordlist to the addedDawg().
329 329
330 Note that the addition of words persists between program executions 330 Note that the addition of words persists between program executions
331 (they are saved in the dictionary files), so you should confirm the 331 (they are saved in the dictionary files), so you should confirm the
332 words with the user before adding them. 332 words with the user before adding them.
333*/ 333*/
334void Global::addWords(const QString& dictname, const QStringList& wordlist) 334void Global::addWords(const QString& dictname, const QStringList& wordlist)
335{ 335{
336 QDawg& d = (QDawg&)dawg(dictname); 336 QDawg& d = (QDawg&)dawg(dictname);
337 QStringList all = d.allWords() + wordlist; 337 QStringList all = d.allWords() + wordlist;
338 d.createFromWords(all); 338 d.createFromWords(all);
339 339
340 QString dawgfilename = applicationFileName("Dictionary", dictname) + ".dawg"; 340 QString dawgfilename = applicationFileName("Dictionary", dictname) + ".dawg";
341 QFile dawgfile(dawgfilename); 341 QFile dawgfile(dawgfilename);
342 if ( dawgfile.open(IO_WriteOnly) ) { 342 if ( dawgfile.open(IO_WriteOnly) ) {
343 d.write(&dawgfile); 343 d.write(&dawgfile);
344 dawgfile.close(); 344 dawgfile.close();
345 } 345 }
346 346
347 // #### Re-read the dawg here if we use mmap(). 347 // #### Re-read the dawg here if we use mmap().
348 348
349 // #### Signal other processes to re-read. 349 // #### Signal other processes to re-read.
350} 350}
351 351
352 352
353/*! 353/*!
354 Returns the full path for the application called \a appname, with the 354 Returns the full path for the application called \a appname, with the
355 given \a filename. Returns QString::null if there was a problem creating 355 given \a filename. Returns QString::null if there was a problem creating
356 the directory tree for \a appname. 356 the directory tree for \a appname.
357 If \a filename contains "/", it is the caller's responsibility to 357 If \a filename contains "/", it is the caller's responsibility to
358 ensure that those directories exist. 358 ensure that those directories exist.
359*/ 359*/
360QString Global::applicationFileName(const QString& appname, const QString& filename) 360QString Global::applicationFileName(const QString& appname, const QString& filename)
361{ 361{
362 QDir d; 362 QDir d;
363 QString r = getenv("HOME"); 363 QString r = getenv("HOME");
364 r += "/Applications/"; 364 r += "/Applications/";
365 if ( !QFile::exists( r ) ) 365 if ( !QFile::exists( r ) )
366 if ( d.mkdir(r) == false ) 366 if ( d.mkdir(r) == false )
367 return QString::null; 367 return QString::null;
368 r += appname; 368 r += appname;
369 if ( !QFile::exists( r ) ) 369 if ( !QFile::exists( r ) )
370 if ( d.mkdir(r) == false ) 370 if ( d.mkdir(r) == false )
371 return QString::null; 371 return QString::null;
372 r += "/"; r += filename; 372 r += "/"; r += filename;
373 return r; 373 return r;
374} 374}
375 375
376/*! 376/*!
377 \internal 377 \internal
378*/ 378*/
379void Global::createDocDir() 379void Global::createDocDir()
380{ 380{
381 if ( !docDirCreated ) { 381 if ( !docDirCreated ) {
382 docDirCreated = TRUE; 382 docDirCreated = TRUE;
383 mkdir( QPEApplication::documentDir().latin1(), 0755 ); 383 mkdir( QPEApplication::documentDir().latin1(), 0755 );
384 } 384 }
385} 385}
386 386
387 387
388/*! 388/*!
389 Displays a status \a message to the user. This usually appears 389 Displays a status \a message to the user. This usually appears
390 in the taskbar for a short amount of time, then disappears. 390 in the taskbar for a short amount of time, then disappears.
391*/ 391*/
392void Global::statusMessage(const QString& message) 392void Global::statusMessage(const QString& message)
393{ 393{
394#if !defined(QT_NO_COP) 394#if !defined(QT_NO_COP)
395 QCopEnvelope e( "QPE/TaskBar", "message(QString)" ); 395 QCopEnvelope e( "QPE/TaskBar", "message(QString)" );
396 e << message; 396 e << message;
397#endif 397#endif
398} 398}
399 399
400/*! 400/*!
401 \internal 401 \internal
402*/ 402*/
403void Global::applyStyle() 403void Global::applyStyle()
404{ 404{
405#if !defined(QT_NO_COP) 405#if !defined(QT_NO_COP)
406 QCopChannel::send( "QPE/System", "applyStyle()" ); 406 QCopChannel::send( "QPE/System", "applyStyle()" );
407#else 407#else
408 ((QPEApplication *)qApp)->applyStyle(); // apply without needing QCop for floppy version 408 ((QPEApplication *)qApp)->applyStyle(); // apply without needing QCop for floppy version
409#endif 409#endif
410} 410}
411 411
412/*! 412/*!
413 \internal 413 \internal
414*/ 414*/
415QWidget *Global::shutdown( bool ) 415QWidget *Global::shutdown( bool )
416{ 416{
417#if !defined(QT_NO_COP) 417#if !defined(QT_NO_COP)
418 QCopChannel::send( "QPE/System", "shutdown()" ); 418 QCopChannel::send( "QPE/System", "shutdown()" );
419#endif 419#endif
420 return 0; 420 return 0;
421} 421}
422 422
423/*! 423/*!
424 \internal 424 \internal
425*/ 425*/
426QWidget *Global::restart( bool ) 426QWidget *Global::restart( bool )
427{ 427{
428#if !defined(QT_NO_COP) 428#if !defined(QT_NO_COP)
429 QCopChannel::send( "QPE/System", "restart()" ); 429 QCopChannel::send( "QPE/System", "restart()" );
430#endif 430#endif
431 return 0; 431 return 0;
432} 432}
433 433
434/*! 434/*!
435 Explicitly show the current input method. 435 Explicitly show the current input method.
436 436
437 Input methods are indicated in the taskbar by a small icon. If the 437 Input methods are indicated in the taskbar by a small icon. If the
438 input method is activated (shown) then it takes up some proportion 438 input method is activated (shown) then it takes up some proportion
439 of the bottom of the screen, to allow the user to interact (input 439 of the bottom of the screen, to allow the user to interact (input
440 characters) with it. 440 characters) with it.
441 441
442 \sa hideInputMethod() 442 \sa hideInputMethod()
443*/ 443*/
444void Global::showInputMethod() 444void Global::showInputMethod()
445{ 445{
446#if !defined(QT_NO_COP) 446#if !defined(QT_NO_COP)
447 QCopChannel::send( "QPE/TaskBar", "showInputMethod()" ); 447 QCopChannel::send( "QPE/TaskBar", "showInputMethod()" );
448#endif 448#endif
449} 449}
450 450
451/*! 451/*!
452 Explicitly hide the current input method. 452 Explicitly hide the current input method.
453 453
454 The current input method is still indicated in the taskbar, but no 454 The current input method is still indicated in the taskbar, but no
455 longer takes up screen space, and can no longer be interacted with. 455 longer takes up screen space, and can no longer be interacted with.
456 456
457 \sa showInputMethod() 457 \sa showInputMethod()
458*/ 458*/
459void Global::hideInputMethod() 459void Global::hideInputMethod()
460{ 460{
461#if !defined(QT_NO_COP) 461#if !defined(QT_NO_COP)
462 QCopChannel::send( "QPE/TaskBar", "hideInputMethod()" ); 462 QCopChannel::send( "QPE/TaskBar", "hideInputMethod()" );
463#endif 463#endif
464} 464}
465 465
466 466
467/*! 467/*!
468 \internal 468 \internal
469*/ 469*/
470bool Global::isBuiltinCommand( const QString &name ) 470bool Global::isBuiltinCommand( const QString &name )
471{ 471{
472 if(!builtin) 472 if(!builtin)
473 return FALSE; // yes, it can happen 473 return FALSE; // yes, it can happen
474 for (int i = 0; builtin[i].file; i++) { 474 for (int i = 0; builtin[i].file; i++) {
475 if ( builtin[i].file == name ) { 475 if ( builtin[i].file == name ) {
476 return TRUE; 476 return TRUE;
477 } 477 }
478 } 478 }
479 return FALSE; 479 return FALSE;
480} 480}
481 481
482Global::Command* Global::builtin=0; 482Global::Command* Global::builtin=0;
483QGuardedPtr<QWidget> *Global::running=0; 483QGuardedPtr<QWidget> *Global::running=0;
484 484
485/*! 485/*!
486 \class Global::Command 486 \class Global::Command
487 \brief The Global::Command class is internal. 487 \brief The Global::Command class is internal.
488 \internal 488 \internal
489*/ 489*/
490 490
491/*! 491/*!
492 \internal 492 \internal
493*/ 493*/
494void Global::setBuiltinCommands( Command* list ) 494void Global::setBuiltinCommands( Command* list )
495{ 495{
496 if ( running ) 496 if ( running )
497 delete [] running; 497 delete [] running;
498 498
499 builtin = list; 499 builtin = list;
500 int count = 0; 500 int count = 0;
501 if (!builtin) 501 if (!builtin)
502 return; 502 return;
503 while ( builtin[count].file ) 503 while ( builtin[count].file )
504 count++; 504 count++;
505 505
506 running = new QGuardedPtr<QWidget> [ count ]; 506 running = new QGuardedPtr<QWidget> [ count ];
507} 507}
508 508
509/*! 509/*!
510 \internal 510 \internal
511*/ 511*/
512void Global::setDocument( QWidget* receiver, const QString& document ) 512void Global::setDocument( QWidget* receiver, const QString& document )
513{ 513{
514 Emitter emitter(receiver,document); 514 Emitter emitter(receiver,document);
515} 515}
516 516
517/*! 517/*!
518 \internal 518 \internal
519*/ 519*/
520bool Global::terminateBuiltin( const QString& n ) 520bool Global::terminateBuiltin( const QString& n )
521{ 521{
522 if (!builtin) 522 if (!builtin)
523 return FALSE; 523 return FALSE;
524 for (int i = 0; builtin[i].file; i++) { 524 for (int i = 0; builtin[i].file; i++) {
525 if ( builtin[i].file == n ) { 525 if ( builtin[i].file == n ) {
526 delete running[i]; 526 delete running[i];
527 return TRUE; 527 return TRUE;
528 } 528 }
529 } 529 }
530 return FALSE; 530 return FALSE;
531} 531}
532 532
533/*! 533/*!
534 \internal 534 \internal
535*/ 535*/
536void Global::terminate( const AppLnk* app ) 536void Global::terminate( const AppLnk* app )
537{ 537{
538 //if ( terminateBuiltin(app->exec()) ) return; // maybe? haven't tried this 538 //if ( terminateBuiltin(app->exec()) ) return; // maybe? haven't tried this
539 539
540#ifndef QT_NO_COP 540#ifndef QT_NO_COP
541 QCString channel = "QPE/Application/" + app->exec().utf8(); 541 QCString channel = "QPE/Application/" + app->exec().utf8();
542 if ( QCopChannel::isRegistered(channel) ) { 542 if ( QCopChannel::isRegistered(channel) ) {
543 QCopEnvelope e(channel, "quit()"); 543 QCopEnvelope e(channel, "quit()");
544 } 544 }
545#endif 545#endif
546} 546}
547 547
548/*! 548/*!
549 Low-level function to run command \a c. 549 Low-level function to run command \a c.
550 550
551 \warning Do not use this function. Use execute instead. 551 \warning Do not use this function. Use execute instead.
552 552
553 \sa execute() 553 \sa execute()
554*/ 554*/
555void Global::invoke(const QString &c) 555void Global::invoke(const QString &c)
556{ 556{
557 // Convert the command line in to a list of arguments 557 // Convert the command line in to a list of arguments
558 QStringList list = QStringList::split(QRegExp(" *"),c); 558 QStringList list = QStringList::split(QRegExp(" *"),c);
559 559
560#if !defined(QT_NO_COP) 560#if !defined(QT_NO_COP)
561 QString ap=list[0]; 561 QString ap=list[0];
562 // see if the application is already running 562 // see if the application is already running
563 // XXX should lock file /tmp/qcop-msg-ap 563 // XXX should lock file /tmp/qcop-msg-ap
564 if ( QCopChannel::isRegistered( ("QPE/Application/" + ap).latin1() ) ) { 564 if ( QCopChannel::isRegistered( ("QPE/Application/" + ap).latin1() ) ) {
565 // If the channel is already register, the app is already running, so show it. 565 // If the channel is already register, the app is already running, so show it.
566 { QCopEnvelope env( ("QPE/Application/" + ap).latin1(), "raise()" ); } 566 { QCopEnvelope env( ("QPE/Application/" + ap).latin1(), "raise()" ); }
567 567
568 //QCopEnvelope e("QPE/System", "notBusy(QString)" ); 568 //QCopEnvelope e("QPE/System", "notBusy(QString)" );
569 //e << ap; 569 //e << ap;
570 return; 570 return;
571 } 571 }
572 // XXX should unlock file /tmp/qcop-msg-ap 572 // XXX should unlock file /tmp/qcop-msg-ap
573 //see if it is being started 573 //see if it is being started
574 if ( StartingAppList::isStarting( ap ) ) { 574 if ( StartingAppList::isStarting( ap ) ) {
575 // FIXME take it out for now, since it leads to a much to short showing of wait if 575 // FIXME take it out for now, since it leads to a much to short showing of wait if
576 // some entry is clicked. 576 // some entry is clicked.
577 // Real cause is that ::execute is called twice for document tab. But it would need some larger changes 577 // Real cause is that ::execute is called twice for document tab. But it would need some larger changes