summaryrefslogtreecommitdiff
path: root/library/global.cpp
authorzecke <zecke>2002-09-10 12:09:49 (UTC)
committer zecke <zecke>2002-09-10 12:09:49 (UTC)
commit6b77a1cdb9536b1c135eb86d53a6b2c22c19b0a4 (patch) (unidiff)
tree6ebc93c6432f4ed9d00ef1448b6a047ef522a79a /library/global.cpp
parentd10cddb3c9ce75bc90b14add14bc133737fe35aa (diff)
downloadopie-6b77a1cdb9536b1c135eb86d53a6b2c22c19b0a4.zip
opie-6b77a1cdb9536b1c135eb86d53a6b2c22c19b0a4.tar.gz
opie-6b77a1cdb9536b1c135eb86d53a6b2c22c19b0a4.tar.bz2
Qtopia1-6 merge
still to test bic changes to be resolved more changes to be made?
Diffstat (limited to 'library/global.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--library/global.cpp165
1 files changed, 124 insertions, 41 deletions
diff --git a/library/global.cpp b/library/global.cpp
index ab27b3f..7438891 100644
--- a/library/global.cpp
+++ b/library/global.cpp
@@ -1,10 +1,10 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000 Trolltech AS. All rights reserved. 2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of 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**
@@ -42,24 +42,26 @@
42#include <sys/stat.h> 42#include <sys/stat.h>
43#include <sys/wait.h> 43#include <sys/wait.h>
44#include <sys/types.h> 44#include <sys/types.h>
45#include <fcntl.h> 45#include <fcntl.h>
46#include <unistd.h> 46#include <unistd.h>
47 47
48#ifdef QWS
48#include <qwindowsystem_qws.h> // for qwsServer 49#include <qwindowsystem_qws.h> // for qwsServer
50#endif
49#include <qdatetime.h> 51#include <qdatetime.h>
50 52
51#include <qfile.h> 53#include <qfile.h>
52 54
53namespace { 55namespace {
54 // checks if the storage should be searched 56 // 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 57 bool checkStorage(const QString &path ){ // this is a small Config replacement cause config is too limited -zecke
56 QFile file(path ); 58 QFile file(path );
57 if(!file.open(IO_ReadOnly ) ) 59 if(!file.open(IO_ReadOnly ) )
58 return true; 60 return true;
59 61
60 QByteArray array = file.readAll(); 62 QByteArray array = file.readAll();
61 QStringList list = QStringList::split('\n', QString( array ) ); 63 QStringList list = QStringList::split('\n', QString( array ) );
62 for(QStringList::Iterator it = list.begin(); it != list.end(); ++it ){ 64 for(QStringList::Iterator it = list.begin(); it != list.end(); ++it ){
63 if( (*it).startsWith("autocheck = 0" ) ){ 65 if( (*it).startsWith("autocheck = 0" ) ){
64 return false; 66 return false;
65 }else if( (*it).startsWith("autocheck = 1" ) ){ 67 }else if( (*it).startsWith("autocheck = 1" ) ){
@@ -105,17 +107,19 @@ private:
105 107
106StartingAppList* StartingAppList::appl = 0; 108StartingAppList* StartingAppList::appl = 0;
107 109
108StartingAppList::StartingAppList( QObject *parent, const char* name ) 110StartingAppList::StartingAppList( QObject *parent, const char* name )
109 :QObject( parent, name ) 111 :QObject( parent, name )
110{ 112{
113#ifdef QWS
111#if QT_VERSION >= 232 && !defined(QT_NO_COP) 114#if QT_VERSION >= 232 && !defined(QT_NO_COP)
112 connect( qwsServer, SIGNAL( newChannel(const QString&)), 115 connect( qwsServer, SIGNAL( newChannel(const QString&)),
113 this, SLOT( handleNewChannel(const QString&)) ); 116 this, SLOT( handleNewChannel(const QString&)) );
114 dict.setAutoDelete( TRUE ); 117 dict.setAutoDelete( TRUE );
115#endif 118#endif
119#endif
116} 120}
117 121
118void StartingAppList::add( const QString& name ) 122void StartingAppList::add( const QString& name )
119{ 123{
120#if QT_VERSION >= 232 && !defined(QT_NO_COP) 124#if QT_VERSION >= 232 && !defined(QT_NO_COP)
121 if ( !appl ) 125 if ( !appl )
@@ -166,13 +170,61 @@ static QString dictDir()
166{ 170{
167 return qpeDir() + "/etc/dict"; 171 return qpeDir() + "/etc/dict";
168} 172}
169 173
170/*! 174/*!
171 \class Global global.h 175 \class Global global.h
172 \brief The Global class collects application-wide global functions. 176 \brief The Global class provides application-wide global functions.
177
178 The Global functions are grouped as follows:
179 \tableofcontents
180
181 \section1 User Interface
182
183 The statusMessage() function provides short-duration messages to the
184 user. The showInputMethod() function shows the current input method,
185 and hideInputMethod() hides the input method.
186
187 \section1 Document related
188
189 The findDocuments() function creates a set of \link doclnk.html
190 DocLnk\endlink objects in a particular folder.
191
192 \section1 Filesystem related
193
194 Global provides an applicationFileName() function that returns the
195 full path of an application-specific file.
196
197 The execute() function runs an application.
198
199 \section1 Word list related
200
201 A list of words relevant to the current locale is maintained by the
202 system. The list is held in a \link qdawg.html DAWG\endlink
203 (implemented by the QDawg class). This list is used, for example, by
204 the pickboard input method.
205
206 The global QDawg is returned by fixedDawg(); this cannot be updated.
207 An updatable copy of the global QDawg is returned by addedDawg().
208 Applications may have their own word lists stored in \l{QDawg}s
209 which are returned by dawg(). Use addWords() to add words to the
210 updateable copy of the global QDawg or to named application
211 \l{QDawg}s.
212
213 \section1 Quoting
214
215 The shellQuote() function quotes a string suitable for passing to a
216 shell. The stringQuote() function backslash escapes '\' and '"'
217 characters.
218
219 \section1 Hardware
220
221 The writeHWClock() function sets the hardware clock to the system
222 clock's date and time.
223
224 \ingroup qtopiaemb
173*/ 225*/
174 226
175/*! 227/*!
176 \internal 228 \internal
177*/ 229*/
178Global::Global() 230Global::Global()
@@ -249,38 +301,48 @@ const QDawg& Global::dawg(const QString& name)
249 if ( !named_dawg ) 301 if ( !named_dawg )
250 named_dawg = new QDict<QDawg>; 302 named_dawg = new QDict<QDawg>;
251 QDawg* r = named_dawg->find(name); 303 QDawg* r = named_dawg->find(name);
252 if ( !r ) { 304 if ( !r ) {
253 r = new QDawg; 305 r = new QDawg;
254 named_dawg->insert(name,r); 306 named_dawg->insert(name,r);
255 QString dawgfilename = dictDir() + "/" + name + ".dawg"; 307 QString dawgfilename = applicationFileName("Dictionary", name ) + ".dawg";
256 QFile dawgfile(dawgfilename); 308 QFile dawgfile(dawgfilename);
257 if ( dawgfile.open(IO_ReadOnly) ) 309 if ( dawgfile.open(IO_ReadOnly) )
258 r->readFile(dawgfilename); 310 r->readFile(dawgfilename);
259 } 311 }
260 return *r; 312 return *r;
261} 313}
262 314
263/*! 315/*!
316 \overload
264 Adds \a wordlist to the addedDawg(). 317 Adds \a wordlist to the addedDawg().
318
319 Note that the addition of words persists between program executions
320 (they are saved in the dictionary files), so you should confirm the
321 words with the user before adding them.
265*/ 322*/
266void Global::addWords(const QStringList& wordlist) 323void Global::addWords(const QStringList& wordlist)
267{ 324{
268 addWords("local",wordlist); 325 addWords("local",wordlist);
269} 326}
270 327
271/*! 328/*!
272 Adds \a wordlist to the dawg() named \a dictname. 329 \overload
330 Adds \a wordlist to the addedDawg().
331
332 Note that the addition of words persists between program executions
333 (they are saved in the dictionary files), so you should confirm the
334 words with the user before adding them.
273*/ 335*/
274void Global::addWords(const QString& dictname, const QStringList& wordlist) 336void Global::addWords(const QString& dictname, const QStringList& wordlist)
275{ 337{
276 QDawg& d = (QDawg&)dawg(dictname); 338 QDawg& d = (QDawg&)dawg(dictname);
277 QStringList all = d.allWords() + wordlist; 339 QStringList all = d.allWords() + wordlist;
278 d.createFromWords(all); 340 d.createFromWords(all);
279 341
280 QString dawgfilename = dictDir() + "/" + dictname + ".dawg"; 342 QString dawgfilename = applicationFileName("Dictionary", dictname) + ".dawg";
281 QFile dawgfile(dawgfilename); 343 QFile dawgfile(dawgfilename);
282 if ( dawgfile.open(IO_WriteOnly) ) { 344 if ( dawgfile.open(IO_WriteOnly) ) {
283 d.write(&dawgfile); 345 d.write(&dawgfile);
284 dawgfile.close(); 346 dawgfile.close();
285 } 347 }
286 348
@@ -288,17 +350,17 @@ void Global::addWords(const QString& dictname, const QStringList& wordlist)
288 350
289 // #### Signal other processes to re-read. 351 // #### Signal other processes to re-read.
290} 352}
291 353
292 354
293/*! 355/*!
294 Returns a full path for the application named \a appname, with the 356 Returns the full path for the application called \a appname, with the
295 given \a filename or QString::null if there was a problem creating 357 given \a filename. Returns QString::null if there was a problem creating
296 the directory tree for \a appname. 358 the directory tree for \a appname.
297 If \a filename contains "/", it is the caller's responsibility to 359 If \a filename contains "/", it is the caller's responsibility to
298 ensure those directories exist. 360 ensure that those directories exist.
299*/ 361*/
300QString Global::applicationFileName(const QString& appname, const QString& filename) 362QString Global::applicationFileName(const QString& appname, const QString& filename)
301{ 363{
302 QDir d; 364 QDir d;
303 QString r = getenv("HOME"); 365 QString r = getenv("HOME");
304 r += "/Applications/"; 366 r += "/Applications/";
@@ -323,14 +385,14 @@ void Global::createDocDir()
323 mkdir( QPEApplication::documentDir().latin1(), 0755 ); 385 mkdir( QPEApplication::documentDir().latin1(), 0755 );
324 } 386 }
325} 387}
326 388
327 389
328/*! 390/*!
329 Displays a status \a message to the user. This generally appears 391 Displays a status \a message to the user. This usually appears
330 in the taskbar for some amount of time, then disappears. 392 in the taskbar for a short amount of time, then disappears.
331*/ 393*/
332void Global::statusMessage(const QString& message) 394void Global::statusMessage(const QString& message)
333{ 395{
334#if defined(Q_WS_QWS) && !defined(QT_NO_COP) 396#if defined(Q_WS_QWS) && !defined(QT_NO_COP)
335 QCopEnvelope e( "QPE/TaskBar", "message(QString)" ); 397 QCopEnvelope e( "QPE/TaskBar", "message(QString)" );
336 e << message; 398 e << message;
@@ -370,22 +432,34 @@ QWidget *Global::restart( bool )
370#endif 432#endif
371 return 0; 433 return 0;
372} 434}
373 435
374/*! 436/*!
375 Explicitly show the current input method. 437 Explicitly show the current input method.
438
439 Input methods are indicated in the taskbar by a small icon. If the
440 input method is activated (shown) then it takes up some proportion
441 of the bottom of the screen, to allow the user to interact (input
442 characters) with it.
443
444 \sa hideInputMethod()
376*/ 445*/
377void Global::showInputMethod() 446void Global::showInputMethod()
378{ 447{
379#if defined(Q_WS_QWS) && !defined(QT_NO_COP) 448#if defined(Q_WS_QWS) && !defined(QT_NO_COP)
380 QCopChannel::send( "QPE/TaskBar", "showInputMethod()" ); 449 QCopChannel::send( "QPE/TaskBar", "showInputMethod()" );
381#endif 450#endif
382} 451}
383 452
384/*! 453/*!
385 Explicitly hide the current input method. 454 Explicitly hide the current input method.
455
456 The current input method is still indicated in the taskbar, but no
457 longer takes up screen space, and can no longer be interacted with.
458
459 \sa showInputMethod()
386*/ 460*/
387void Global::hideInputMethod() 461void Global::hideInputMethod()
388{ 462{
389#if defined(Q_WS_QWS) && !defined(QT_NO_COP) 463#if defined(Q_WS_QWS) && !defined(QT_NO_COP)
390 QCopChannel::send( "QPE/TaskBar", "hideInputMethod()" ); 464 QCopChannel::send( "QPE/TaskBar", "hideInputMethod()" );
391#endif 465#endif
@@ -462,36 +536,42 @@ bool Global::terminateBuiltin( const QString& n )
462 \internal 536 \internal
463*/ 537*/
464void Global::terminate( const AppLnk* app ) 538void Global::terminate( const AppLnk* app )
465{ 539{
466 //if ( terminateBuiltin(app->exec()) ) return; // maybe? haven't tried this 540 //if ( terminateBuiltin(app->exec()) ) return; // maybe? haven't tried this
467 541
542#ifndef QT_NO_COP
468 QCString channel = "QPE/Application/" + app->exec().utf8(); 543 QCString channel = "QPE/Application/" + app->exec().utf8();
469 if ( QCopChannel::isRegistered(channel) ) { 544 if ( QCopChannel::isRegistered(channel) ) {
470 QCopEnvelope e(channel, "quit()"); 545 QCopEnvelope e(channel, "quit()");
471 } 546 }
547#endif
472} 548}
473 549
474/*! 550/*!
475 Low-level function to run command \a c. Not recommended. 551 Low-level function to run command \a c.
552
553 \warning Do not use this function. Use execute instead.
554
555 \sa execute()
476*/ 556*/
477void Global::invoke(const QString &c) 557void Global::invoke(const QString &c)
478{ 558{
479 // Convert the command line in to a list of arguments 559 // Convert the command line in to a list of arguments
480 QStringList list = QStringList::split(QRegExp(" *"),c); 560 QStringList list = QStringList::split(QRegExp(" *"),c);
481 561
482#if defined(Q_WS_QWS) && !defined(QT_NO_COP) 562#if defined(Q_WS_QWS) && !defined(QT_NO_COP)
483 QString ap=list[0]; 563 QString ap=list[0];
484 // see if the application is already running 564 // see if the application is already running
485 // XXX should lock file /tmp/qcop-msg-ap 565 // XXX should lock file /tmp/qcop-msg-ap
486 if ( QCopChannel::isRegistered( ("QPE/Application/" + ap).latin1() ) ) { 566 if ( QCopChannel::isRegistered( ("QPE/Application/" + ap).latin1() ) ) {
487 QCopEnvelope e("QPE/System", "notBusy(QString)" ); 567 QCopEnvelope e("QPE/System", "notBusy(QString)" );
488 e << ap; 568 e << ap;
489 return; 569 return;
490 } 570 }
491 // XXX should unlock file /tmp/qcop-msg-ap 571 // XXX should unlock file /tmp/qcop-msg-ap
492 //see if it is being started 572 //see if it is being started
493 if ( StartingAppList::isStarting( ap ) ) { 573 if ( StartingAppList::isStarting( ap ) ) {
494 QCopEnvelope e("QPE/System", "notBusy(QString)" ); 574 QCopEnvelope e("QPE/System", "notBusy(QString)" );
495 e << ap; 575 e << ap;
496 return; 576 return;
497 } 577 }
@@ -521,13 +601,13 @@ void Global::invoke(const QString &c)
521#ifdef HAVE_QUICKEXEC 601#ifdef HAVE_QUICKEXEC
522 QString libexe = qpeDir()+"/binlib/lib"+args[0] + ".so"; 602 QString libexe = qpeDir()+"/binlib/lib"+args[0] + ".so";
523 qDebug("libfile = %s", libexe.latin1() ); 603 qDebug("libfile = %s", libexe.latin1() );
524 if ( QFile::exists( libexe ) ) { 604 if ( QFile::exists( libexe ) ) {
525 qDebug("calling quickexec %s", libexe.latin1() ); 605 qDebug("calling quickexec %s", libexe.latin1() );
526 quickexecv( libexe.utf8().data(), (const char **)args ); 606 quickexecv( libexe.utf8().data(), (const char **)args );
527 } else 607 } else
528#endif 608#endif
529 { 609 {
530 if ( !::vfork() ) { 610 if ( !::vfork() ) {
531 for ( int fd = 3; fd < 100; fd++ ) 611 for ( int fd = 3; fd < 100; fd++ )
532 ::close( fd ); 612 ::close( fd );
533 ::setpgid( ::getpid(), ::getppid() ); 613 ::setpgid( ::getpid(), ::getppid() );
@@ -538,17 +618,19 @@ void Global::invoke(const QString &c)
538 } 618 }
539 } 619 }
540 StartingAppList::add( list[0] ); 620 StartingAppList::add( list[0] );
541#endif //QT_NO_QWS_MULTIPROCESS 621#endif //QT_NO_QWS_MULTIPROCESS
542} 622}
543 623
624
544/*! 625/*!
545 Executes application identfied by \a c, passing \a document. 626 Executes the application identfied by \a c, passing \a
627 document if it isn't null.
546 628
547 Note that you might be better off sending a QCop message to 629 Note that a better approach might be to send a QCop message to the
548 the application's QPE/Application/<i>appname</i> channel. 630 application's QPE/Application/\e{appname} channel.
549*/ 631*/
550void Global::execute( const QString &c, const QString& document ) 632void Global::execute( const QString &c, const QString& document )
551{ 633{
552 if ( qApp->type() != QApplication::GuiServer ) { 634 if ( qApp->type() != QApplication::GuiServer ) {
553 // ask the server to do the work 635 // ask the server to do the work
554#if defined(Q_WS_QWS) && !defined(QT_NO_COP) 636#if defined(Q_WS_QWS) && !defined(QT_NO_COP)
@@ -574,14 +656,16 @@ void Global::execute( const QString &c, const QString& document )
574 running[i]->raise(); 656 running[i]->raise();
575 running[i]->show(); 657 running[i]->show();
576 running[i]->setActiveWindow(); 658 running[i]->setActiveWindow();
577 } else { 659 } else {
578 running[i] = builtin[i].func( builtin[i].maximized ); 660 running[i] = builtin[i].func( builtin[i].maximized );
579 } 661 }
662#ifndef QT_NO_COP
580 QCopEnvelope e("QPE/System", "notBusy(QString)" ); 663 QCopEnvelope e("QPE/System", "notBusy(QString)" );
581 e << c; // that was quick ;-) 664 e << c; // that was quick ;-)
665#endif
582 return; 666 return;
583 } 667 }
584 } 668 }
585 } 669 }
586 670
587 //Global::invoke(c, document); 671 //Global::invoke(c, document);
@@ -591,29 +675,32 @@ void Global::execute( const QString &c, const QString& document )
591 675
592#if defined(Q_WS_QWS) && !defined(QT_NO_COP) 676#if defined(Q_WS_QWS) && !defined(QT_NO_COP)
593 QString ap=list[0]; 677 QString ap=list[0];
594 678
595 qDebug("executing %s", ap.latin1() ); 679 qDebug("executing %s", ap.latin1() );
596 if ( ap == "suspend" ) { 680 if ( ap == "suspend" ) {
597 QWSServer::sendKeyEvent( 0xffff, Qt::Key_F34, FALSE, TRUE, FALSE ); 681 QWSServer::sendKeyEvent( 0xffff, Qt::Key_F34, FALSE, TRUE, FALSE );
598 return; 682 return;
599 } 683 }
600 684
601 /* if need be, sending a qcop message will result in an invoke, see 685 /* if need be, sending a qcop message will result in an invoke, see
602 preceeding function */ 686 preceeding function */
603 { QCopEnvelope env( ("QPE/Application/" + ap).latin1(), "raise()" ); } 687 invoke( ap );
688 //{ QCopEnvelope env( ("QPE/Application/" + ap).latin1(), "raise()" ); }
604 if ( !document.isEmpty() ) { 689 if ( !document.isEmpty() ) {
605 QCopEnvelope env( ("QPE/Application/" + ap).latin1(), "setDocument(QString)" ); 690 QCopEnvelope env( ("QPE/Application/" + ap).latin1(), "setDocument(QString)" );
606 env << document; 691 env << document;
607 } 692 }
608#endif 693#endif
609} 694}
610 695
611/*! 696/*!
612 Returns the string \a s with the characters backslash, ", and $ 697 Returns the string \a s with the characters '\', '"', and '$' quoted
613 quoted by a preceeding backslash. 698 by a preceeding '\'.
699
700 \sa stringQuote()
614*/ 701*/
615QString Global::shellQuote(const QString& s) 702QString Global::shellQuote(const QString& s)
616{ 703{
617 QString r="\""; 704 QString r="\"";
618 for (int i=0; i<(int)s.length(); i++) { 705 for (int i=0; i<(int)s.length(); i++) {
619 char c = s[i].latin1(); 706 char c = s[i].latin1();
@@ -625,14 +712,16 @@ QString Global::shellQuote(const QString& s)
625 } 712 }
626 r += "\""; 713 r += "\"";
627 return r; 714 return r;
628} 715}
629 716
630/*! 717/*!
631 Returns the string \a s with the characters backslash and " 718 Returns the string \a s with the characters '\' and '"' quoted by a
632 quoted by a preceeding backslash. 719 preceeding '\'.
720
721 \sa shellQuote()
633*/ 722*/
634QString Global::stringQuote(const QString& s) 723QString Global::stringQuote(const QString& s)
635{ 724{
636 QString r="\""; 725 QString r="\"";
637 for (int i=0; i<(int)s.length(); i++) { 726 for (int i=0; i<(int)s.length(); i++) {
638 char c = s[i].latin1(); 727 char c = s[i].latin1();
@@ -658,27 +747,27 @@ void Global::findDocuments(DocLnkSet* folder, const QString &mimefilter)
658 folder->appendFrom(d); 747 folder->appendFrom(d);
659 /** let's do intellegint way of searching these files 748 /** let's do intellegint way of searching these files
660 * a) the user don't want to check mediums global 749 * a) the user don't want to check mediums global
661 * b) the user wants to check but use the global options for it 750 * b) the user wants to check but use the global options for it
662 * c) the user wants to check it but not this medium 751 * c) the user wants to check it but not this medium
663 * d) the user wants to check and this medium as well 752 * d) the user wants to check and this medium as well
664 * 753 *
665 * In all cases we need to apply a different mimefilter to 754 * In all cases we need to apply a different mimefilter to
666 * the medium. 755 * the medium.
667 * a) mimefilter.isEmpty() we need to apply the responding filter 756 * a) mimefilter.isEmpty() we need to apply the responding filter
668 * either the global or the one on the medium 757 * either the global or the one on the medium
669 * 758 *
670 * b) mimefilter is set to an application we need to find out if the 759 * b) mimefilter is set to an application we need to find out if the
671 * mimetypes are included in the mime mask of the medium 760 * mimetypes are included in the mime mask of the medium
672 */ 761 */
673 StorageInfo storage; 762 StorageInfo storage;
674 const QList<FileSystem> &fs = storage.fileSystems(); 763 const QList<FileSystem> &fs = storage.fileSystems();
675 QListIterator<FileSystem> it ( fs ); 764 QListIterator<FileSystem> it ( fs );
676 for ( ; it.current(); ++it ) { 765 for ( ; it.current(); ++it ) {
677 if ( (*it)->isRemovable() ) { // let's find out if we should search on it 766 if ( (*it)->isRemovable() ) { // let's find out if we should search on it
678 // this is a candidate look at the cf and see if we should search on it 767 // this is a candidate look at the cf and see if we should search on it
679 QString path = (*it)->path(); 768 QString path = (*it)->path();
680 if( !checkStorage((*it)->path() + "/.opiestorage.cf" ) ) 769 if( !checkStorage((*it)->path() + "/.opiestorage.cf" ) )
681 continue; 770 continue;
682 DocLnkSet ide( path, mimefilter ); 771 DocLnkSet ide( path, mimefilter );
683 folder->appendFrom(ide); 772 folder->appendFrom(ide);
684 } else if ( (*it)->disk() == "/dev/mtdblock6" || (*it)->disk() == "tmpfs" ) { 773 } else if ( (*it)->disk() == "/dev/mtdblock6" || (*it)->disk() == "tmpfs" ) {
@@ -710,21 +799,15 @@ QStringList Global::helpPath()
710 for (QStringList::ConstIterator it = langs.fromLast(); it!=langs.end(); --it) { 799 for (QStringList::ConstIterator it = langs.fromLast(); it!=langs.end(); --it) {
711 QString lang = *it; 800 QString lang = *it;
712 if ( !lang.isEmpty() ) 801 if ( !lang.isEmpty() )
713 path += QPEApplication::qpeDir() + "/help/" + lang + "/html"; 802 path += QPEApplication::qpeDir() + "/help/" + lang + "/html";
714 } 803 }
715 path += QPEApplication::qpeDir() + "/pics"; 804 path += QPEApplication::qpeDir() + "/pics";
716 path += QPEApplication::qpeDir() + "/help/en/html"; 805 path += QPEApplication::qpeDir() + "/help/html";
717 path += QPEApplication::qpeDir() + "/docs"; 806 path += QPEApplication::qpeDir() + "/docs";
718 QString dir = QDir::current().canonicalPath(); 807
719 if ( dir == "/" ) 808
720 dir += "/docs";
721 else {
722 path += dir + "/../pics";
723 dir += "/../docs";
724 path += dir;
725 }
726 return path; 809 return path;
727} 810}
728 811
729 812
730#include "global.moc" 813#include "global.moc"