summaryrefslogtreecommitdiff
authorzecke <zecke>2002-03-24 19:31:32 (UTC)
committer zecke <zecke>2002-03-24 19:31:32 (UTC)
commiteb813af4c1e301c8ba015627a1da04f8199a3be2 (patch) (unidiff)
tree7f23f61c2d8c58655fc98798b7f1b4aec75b5ff3
parent4802684dd785274be50b472c87e315da0e325449 (diff)
downloadopie-eb813af4c1e301c8ba015627a1da04f8199a3be2.zip
opie-eb813af4c1e301c8ba015627a1da04f8199a3be2.tar.gz
opie-eb813af4c1e301c8ba015627a1da04f8199a3be2.tar.bz2
Here is the second chunk of bits to make things a bit more fast
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--library/global.cpp35
-rw-r--r--library/global.h8
-rw-r--r--library/storage.cpp5
3 files changed, 42 insertions, 6 deletions
diff --git a/library/global.cpp b/library/global.cpp
index dd15eb7..5a28595 100644
--- a/library/global.cpp
+++ b/library/global.cpp
@@ -19,64 +19,86 @@
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#if defined(Q_WS_QWS) && !defined(QT_NO_COP) 28#if defined(Q_WS_QWS) && !defined(QT_NO_COP)
29#include "qpe/qcopenvelope_qws.h" 29#include "qpe/qcopenvelope_qws.h"
30#endif 30#endif
31 31
32#include <qfile.h> 32#include <qfile.h>
33#include <qlabel.h> 33#include <qlabel.h>
34#include <qtimer.h> 34#include <qtimer.h>
35#include <qmap.h> 35#include <qmap.h>
36#include <qdict.h> 36#include <qdict.h>
37#include <qdir.h> 37#include <qdir.h>
38#include <qmessagebox.h> 38#include <qmessagebox.h>
39#include <qregexp.h> 39#include <qregexp.h>
40 40
41#include <stdlib.h> 41#include <stdlib.h>
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#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>
52
53namespace {
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
56 QFile file(path );
57 if(!file.open(IO_ReadOnly ) )
58 return true;
59
60 QByteArray array = file.readAll();
61 QStringList list = QStringList::split('\n', QString( array ) );
62 for(QStringList::Iterator it = list.begin(); it != list.end(); ++it ){
63 if( (*it).startsWith("autocheck = 0" ) ){
64 return true;
65 }else if( (*it).startsWith("autocheck = 1" ) ){
66 return false;
67 }
68 }
69 return true;
70 }
71}
72
51//#include "quickexec_p.h" 73//#include "quickexec_p.h"
52 74
53class Emitter : public QObject { 75class Emitter : public QObject {
54 Q_OBJECT 76 Q_OBJECT
55public: 77public:
56 Emitter( QWidget* receiver, const QString& document ) 78 Emitter( QWidget* receiver, const QString& document )
57 { 79 {
58 connect(this, SIGNAL(setDocument(const QString&)), 80 connect(this, SIGNAL(setDocument(const QString&)),
59 receiver, SLOT(setDocument(const QString&))); 81 receiver, SLOT(setDocument(const QString&)));
60 emit setDocument(document); 82 emit setDocument(document);
61 disconnect(this, SIGNAL(setDocument(const QString&)), 83 disconnect(this, SIGNAL(setDocument(const QString&)),
62 receiver, SLOT(setDocument(const QString&))); 84 receiver, SLOT(setDocument(const QString&)));
63 } 85 }
64 86
65signals: 87signals:
66 void setDocument(const QString&); 88 void setDocument(const QString&);
67}; 89};
68 90
69 91
70class StartingAppList : public QObject { 92class StartingAppList : public QObject {
71 Q_OBJECT 93 Q_OBJECT
72public: 94public:
73 static void add( const QString& name ); 95 static void add( const QString& name );
74 static bool isStarting( const QString name ); 96 static bool isStarting( const QString name );
75private slots: 97private slots:
76 void handleNewChannel( const QString &); 98 void handleNewChannel( const QString &);
77private: 99private:
78 StartingAppList( QObject *parent=0, const char* name=0 ) ; 100 StartingAppList( QObject *parent=0, const char* name=0 ) ;
79 101
80 QDict<QTime> dict; 102 QDict<QTime> dict;
81 static StartingAppList *appl; 103 static StartingAppList *appl;
82}; 104};
@@ -609,69 +631,72 @@ QString Global::shellQuote(const QString& s)
609 Returns the string \a s with the characters backslash and " 631 Returns the string \a s with the characters backslash and "
610 quoted by a preceeding backslash. 632 quoted by a preceeding backslash.
611*/ 633*/
612QString Global::stringQuote(const QString& s) 634QString Global::stringQuote(const QString& s)
613{ 635{
614 QString r="\""; 636 QString r="\"";
615 for (int i=0; i<(int)s.length(); i++) { 637 for (int i=0; i<(int)s.length(); i++) {
616 char c = s[i].latin1(); 638 char c = s[i].latin1();
617 switch (c) { 639 switch (c) {
618 case '\\': case '"': 640 case '\\': case '"':
619 r+="\\"; 641 r+="\\";
620 } 642 }
621 r += s[i]; 643 r += s[i];
622 } 644 }
623 r += "\""; 645 r += "\"";
624 return r; 646 return r;
625} 647}
626 648
627/*! 649/*!
628 Finds all documents on the system's document directories which 650 Finds all documents on the system's document directories which
629 match the filter \a mimefilter, and appends the resulting DocLnk 651 match the filter \a mimefilter, and appends the resulting DocLnk
630 objects to \a folder. 652 objects to \a folder.
631*/ 653*/
632void Global::findDocuments(DocLnkSet* folder, const QString &mimefilter) 654void Global::findDocuments(DocLnkSet* folder, const QString &mimefilter)
633{ 655{
634 QString homedocs = QString(getenv("HOME")) + "/Documents"; 656 QString homedocs = QString(getenv("HOME")) + "/Documents";
635 DocLnkSet d(homedocs,mimefilter); 657 DocLnkSet d(homedocs,mimefilter);
636 folder->appendFrom(d); 658 folder->appendFrom(d);
637 StorageInfo storage; 659 StorageInfo storage;
638 const QList<FileSystem> &fs = storage.fileSystems(); 660 const QList<FileSystem> &fs = storage.fileSystems();
639 QListIterator<FileSystem> it ( fs ); 661 QListIterator<FileSystem> it ( fs );
640 for ( ; it.current(); ++it ) { 662 for ( ; it.current(); ++it ) {
641 if ( (*it)->isRemovable() ) { 663 if ( (*it)->isRemovable() ) { // let's find out if we should search on it
642 QString path = (*it)->path(); 664 // this is a candidate look at the cf and see if we should search on it
643 DocLnkSet ide( path, mimefilter ); 665 QString path = (*it)->path();
644 folder->appendFrom(ide); 666 if( !checkStorage((*it)->path() + "/.opiestorage.cf" ) )
645 } 667 continue;
668 DocLnkSet ide( path, mimefilter );
669 folder->appendFrom(ide);
670 }
646 } 671 }
647} 672}
648 673
649QStringList Global::languageList() 674QStringList Global::languageList()
650{ 675{
651 QString lang = getenv("LANG"); 676 QString lang = getenv("LANG");
652 QStringList langs; 677 QStringList langs;
653 langs.append(lang); 678 langs.append(lang);
654 int i = lang.find("."); 679 int i = lang.find(".");
655 if ( i > 0 ) 680 if ( i > 0 )
656 lang = lang.left( i ); 681 lang = lang.left( i );
657 i = lang.find( "_" ); 682 i = lang.find( "_" );
658 if ( i > 0 ) 683 if ( i > 0 )
659 langs.append(lang.left(i)); 684 langs.append(lang.left(i));
660 return langs; 685 return langs;
661} 686}
662 687
663QStringList Global::helpPath() 688QStringList Global::helpPath()
664{ 689{
665 QStringList path; 690 QStringList path;
666 QStringList langs = Global::languageList(); 691 QStringList langs = Global::languageList();
667 for (QStringList::ConstIterator it = langs.fromLast(); it!=langs.end(); --it) { 692 for (QStringList::ConstIterator it = langs.fromLast(); it!=langs.end(); --it) {
668 QString lang = *it; 693 QString lang = *it;
669 if ( !lang.isEmpty() ) 694 if ( !lang.isEmpty() )
670 path += QPEApplication::qpeDir() + "/help/" + lang + "/html"; 695 path += QPEApplication::qpeDir() + "/help/" + lang + "/html";
671 } 696 }
672 path += QPEApplication::qpeDir() + "/pics"; 697 path += QPEApplication::qpeDir() + "/pics";
673 path += QPEApplication::qpeDir() + "/help/en/html"; 698 path += QPEApplication::qpeDir() + "/help/en/html";
674 path += QPEApplication::qpeDir() + "/docs"; 699 path += QPEApplication::qpeDir() + "/docs";
675 QString dir = QDir::current().canonicalPath(); 700 QString dir = QDir::current().canonicalPath();
676 if ( dir == "/" ) 701 if ( dir == "/" )
677 dir += "/docs"; 702 dir += "/docs";
diff --git a/library/global.h b/library/global.h
index d9ff8f8..fdf8754 100644
--- a/library/global.h
+++ b/library/global.h
@@ -1,85 +1,93 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2002 Holger 'zecke' Freyther <freyther@kde.org>
2** Copyright (C) 2000 Trolltech AS. All rights reserved. 3** Copyright (C) 2000 Trolltech AS. All rights reserved.
3** 4**
4** This file is part of Qtopia Environment. 5** This file is part of Qtopia Environment.
5** 6**
6** This file may be distributed and/or modified under the terms of the 7** 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 8** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 9** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 10** packaging of this file.
10** 11**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 12** 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. 13** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 14**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 15** See http://www.trolltech.com/gpl/ for GPL licensing information.
15** 16**
16** Contact info@trolltech.com if any conditions of this licensing are 17** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 18** not clear to you.
18** 19**
19**********************************************************************/ 20**********************************************************************/
20#ifndef GLOBAL_H 21#ifndef GLOBAL_H
21#define GLOBAL_H 22#define GLOBAL_H
22 23
23#include <qstringlist.h> 24#include <qstringlist.h>
24#include <qguardedptr.h> 25#include <qguardedptr.h>
25class QDawg; 26class QDawg;
26class QLabel; 27class QLabel;
27class QWidget; 28class QWidget;
28class AppLnk; 29class AppLnk;
29class DocLnkSet; 30class DocLnkSet;
30 31
31class Global 32class Global
32{ 33{
33public: 34public:
34 Global(); 35 Global();
35 36
36 // Dictionaries 37 // Dictionaries
37 static const QDawg& fixedDawg(); 38 static const QDawg& fixedDawg();
38 static const QDawg& addedDawg(); 39 static const QDawg& addedDawg();
39 static const QDawg& dawg(const QString& name); 40 static const QDawg& dawg(const QString& name);
40 41
41 static void addWords(const QStringList& word); 42 static void addWords(const QStringList& word);
42 static void addWords(const QString& dictname, const QStringList& word); 43 static void addWords(const QString& dictname, const QStringList& word);
43 // static void removeWords(const QStringList& word); -- if someone wants it 44 // static void removeWords(const QStringList& word); -- if someone wants it
44 45
45 static void createDocDir(); 46 static void createDocDir();
46 47
47 static void findDocuments(DocLnkSet* folder, const QString &mimefilter=QString::null); 48 static void findDocuments(DocLnkSet* folder, const QString &mimefilter=QString::null);
49 // we don't need a mimefilter. Same as above but this is fast as light speed or not ;)
50 //static void findNewDocuments( DocLnkSet* folder );
48 51
49 static QString applicationFileName(const QString& appname, const QString& filename); 52 static QString applicationFileName(const QString& appname, const QString& filename);
50 53
51 struct Command { 54 struct Command {
52 const char *file; 55 const char *file;
53 QWidget *(*func)( bool ); 56 QWidget *(*func)( bool );
54 bool maximized; 57 bool maximized;
55 bool documentary; 58 bool documentary;
56 }; 59 };
57 static void setBuiltinCommands( Command* ); 60 static void setBuiltinCommands( Command* );
58 61
59 static void invoke( const QString &exec); 62 static void invoke( const QString &exec);
60 static void execute( const QString &exec, const QString &document=QString::null ); 63 static void execute( const QString &exec, const QString &document=QString::null );
61 static void setDocument( QWidget* receiver, const QString& document ); 64 static void setDocument( QWidget* receiver, const QString& document );
62 static bool terminateBuiltin( const QString& ); 65 static bool terminateBuiltin( const QString& );
63 static void terminate( const AppLnk* ); 66 static void terminate( const AppLnk* );
64 67
65 static bool isBuiltinCommand( const QString &name ); 68 static bool isBuiltinCommand( const QString &name );
66 69
67 // system messaging 70 // system messaging
68 static void applyStyle(); 71 static void applyStyle();
69 static void statusMessage(const QString&); 72 static void statusMessage(const QString&);
70 static QWidget *shutdown( bool = FALSE ); 73 static QWidget *shutdown( bool = FALSE );
71 static QWidget *restart( bool = FALSE ); 74 static QWidget *restart( bool = FALSE );
72 static void hideInputMethod(); 75 static void hideInputMethod();
73 static void showInputMethod(); 76 static void showInputMethod();
74 77
75 static void writeHWClock(); 78 static void writeHWClock();
76 79
77 static QString shellQuote(const QString& s); 80 static QString shellQuote(const QString& s);
78 static QString stringQuote(const QString& s); 81 static QString stringQuote(const QString& s);
79 82
83#ifdef QTOPIA_INTERNAL_LANGLIST
84 static QStringList languageList();
85 static QStringList helpPath();
86#endif
87
80private: 88private:
81 static Command* builtin; 89 static Command* builtin;
82 static QGuardedPtr<QWidget> *running; 90 static QGuardedPtr<QWidget> *running;
83}; 91};
84 92
85#endif 93#endif
diff --git a/library/storage.cpp b/library/storage.cpp
index bd34a5f..a4c96be 100644
--- a/library/storage.cpp
+++ b/library/storage.cpp
@@ -1,119 +1,122 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) Holger 'zecke' Freyther <freyther@kde.org>
2** Copyright (C) 2000 Trolltech AS. All rights reserved. 3** Copyright (C) 2000 Trolltech AS. All rights reserved.
3** 4**
4** This file is part of Qtopia Environment. 5** This file is part of Qtopia Environment.
5** 6**
6** This file may be distributed and/or modified under the terms of the 7** 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 8** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 9** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 10** packaging of this file.
10** 11**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 12** 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. 13** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 14**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 15** See http://www.trolltech.com/gpl/ for GPL licensing information.
15** 16**
16** Contact info@trolltech.com if any conditions of this licensing are 17** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 18** not clear to you.
18** 19**
19**********************************************************************/ 20**********************************************************************/
20 21
21#include <qpe/storage.h> 22#include <qpe/storage.h>
22#ifdef QT_QWS_CUSTOM 23#ifdef QT_QWS_CUSTOM
23#include <qpe/custom.h> 24#include <qpe/custom.h>
24#endif 25#endif
25 26
27#include <qfile.h>
26#include <qtimer.h> 28#include <qtimer.h>
27#include <qcopchannel_qws.h> 29#include <qcopchannel_qws.h>
28 30
29#include <stdio.h> 31#include <stdio.h>
30 32
31#if defined(_OS_LINUX_) || defined(Q_OS_LINUX) 33#if defined(_OS_LINUX_) || defined(Q_OS_LINUX)
32#include <sys/vfs.h> 34#include <sys/vfs.h>
33#include <mntent.h> 35#include <mntent.h>
34#endif 36#endif
35 37
36#include <qstringlist.h> 38#include <qstringlist.h>
37 39
38static bool isCF(const QString& m) 40static bool isCF(const QString& m)
39{ 41{
40 FILE* f = fopen("/var/run/stab", "r"); 42 FILE* f = fopen("/var/run/stab", "r");
41 if (!f) f = fopen("/var/state/pcmcia/stab", "r"); 43 if (!f) f = fopen("/var/state/pcmcia/stab", "r");
42 if (!f) f = fopen("/var/lib/pcmcia/stab", "r"); 44 if (!f) f = fopen("/var/lib/pcmcia/stab", "r");
43 if ( f ) { 45 if ( f ) {
44 char line[1024]; 46 char line[1024];
45 char devtype[80]; 47 char devtype[80];
46 char devname[80]; 48 char devname[80];
47 while ( fgets( line, 1024, f ) ) { 49 while ( fgets( line, 1024, f ) ) {
48 // 0 ide ide-cs 0 hda 3 0 50 // 0 ide ide-cs 0 hda 3 0
49 if ( sscanf(line,"%*d %s %*s %*s %s", devtype, devname )==2 ) 51 if ( sscanf(line,"%*d %s %*s %*s %s", devtype, devname )==2 )
50 { 52 {
51 if ( QString(devtype) == "ide" && m.find(devname)>0 ) { 53 if ( QString(devtype) == "ide" && m.find(devname)>0 ) {
52 fclose(f); 54 fclose(f);
53 return TRUE; 55 return TRUE;
54 } 56 }
55 } 57 }
56 } 58 }
57 fclose(f); 59 fclose(f);
58 } 60 }
59 return FALSE; 61 return FALSE;
60} 62}
61 63
62StorageInfo::StorageInfo( QObject *parent ) 64StorageInfo::StorageInfo( QObject *parent )
63 : QObject( parent ) 65 : QObject( parent )
64{ 66{
65 mFileSystems.setAutoDelete( TRUE ); 67 mFileSystems.setAutoDelete( TRUE );
66 channel = new QCopChannel( "QPE/Card", this ); 68 channel = new QCopChannel( "QPE/Card", this );
67 connect( channel, SIGNAL(received(const QCString &, const QByteArray &)), 69 connect( channel, SIGNAL(received(const QCString &, const QByteArray &)),
68 this, SLOT(cardMessage( const QCString &, const QByteArray &)) ); 70 this, SLOT(cardMessage( const QCString &, const QByteArray &)) );
69 update(); 71 update();
70} 72}
71 73
72const FileSystem *StorageInfo::fileSystemOf( const QString &filename ) 74const FileSystem *StorageInfo::fileSystemOf( const QString &filename )
73{ 75{
74 for (QListIterator<FileSystem> i(mFileSystems); i.current(); ++i) { 76 for (QListIterator<FileSystem> i(mFileSystems); i.current(); ++i) {
75 if ( filename.startsWith( (*i)->path() ) ) 77 if ( filename.startsWith( (*i)->path() ) )
76 return (*i); 78 return (*i);
77 } 79 }
78 return 0; 80 return 0;
79} 81}
80 82
81 83
82void StorageInfo::cardMessage( const QCString& msg, const QByteArray& ) 84void StorageInfo::cardMessage( const QCString& msg, const QByteArray& )
83{ 85{
84 if ( msg == "mtabChanged()" ) 86 if ( msg == "mtabChanged()" )
85 update(); 87 update();
86} 88}
87 89// cause of the lack of a d pointer we need
90// to store informations in a config file :(
88void StorageInfo::update() 91void StorageInfo::update()
89{ 92{
90 //qDebug("StorageInfo::updating"); 93 //qDebug("StorageInfo::updating");
91#if defined(_OS_LINUX_) || defined(Q_OS_LINUX) 94#if defined(_OS_LINUX_) || defined(Q_OS_LINUX)
92 struct mntent *me; 95 struct mntent *me;
93 FILE *mntfp = setmntent( "/etc/mtab", "r" ); 96 FILE *mntfp = setmntent( "/etc/mtab", "r" );
94 97
95 QStringList curdisks; 98 QStringList curdisks;
96 QStringList curopts; 99 QStringList curopts;
97 QStringList curfs; 100 QStringList curfs;
98 bool rebuild = FALSE; 101 bool rebuild = FALSE;
99 int n=0; 102 int n=0;
100 if ( mntfp ) { 103 if ( mntfp ) {
101 while ( (me = getmntent( mntfp )) != 0 ) { 104 while ( (me = getmntent( mntfp )) != 0 ) {
102 QString fs = me->mnt_fsname; 105 QString fs = me->mnt_fsname;
103 if ( fs.left(7)=="/dev/hd" || fs.left(7)=="/dev/sd" 106 if ( fs.left(7)=="/dev/hd" || fs.left(7)=="/dev/sd"
104 || fs.left(8)=="/dev/mtd" || fs.left(9) == "/dev/mmcd" ) 107 || fs.left(8)=="/dev/mtd" || fs.left(9) == "/dev/mmcd" )
105 { 108 {
106 n++; 109 n++;
107 curdisks.append(fs); 110 curdisks.append(fs);
108 curopts.append( me->mnt_opts ); 111 curopts.append( me->mnt_opts );
109 //qDebug("-->fs %s opts %s", fs.latin1(), me->mnt_opts ); 112 //qDebug("-->fs %s opts %s", fs.latin1(), me->mnt_opts );
110 curfs.append( me->mnt_dir ); 113 curfs.append( me->mnt_dir );
111 bool found = FALSE; 114 bool found = FALSE;
112 for (QListIterator<FileSystem> i(mFileSystems); i.current(); ++i) { 115 for (QListIterator<FileSystem> i(mFileSystems); i.current(); ++i) {
113 if ( (*i)->disk() == fs ) { 116 if ( (*i)->disk() == fs ) {
114 found = TRUE; 117 found = TRUE;
115 break; 118 break;
116 } 119 }
117 } 120 }
118 if ( !found ) 121 if ( !found )
119 rebuild = TRUE; 122 rebuild = TRUE;