author | alwin <alwin> | 2004-02-21 23:05:04 (UTC) |
---|---|---|
committer | alwin <alwin> | 2004-02-21 23:05:04 (UTC) |
commit | 4cfad0d1331a5e3adc8bc2599783750875e6fd2b (patch) (side-by-side diff) | |
tree | fda9d83c9cdf75a1340f3465460b5fe86009ac02 | |
parent | 51c51fef13a91b263acba430faaa3332bf145343 (diff) | |
download | opie-4cfad0d1331a5e3adc8bc2599783750875e6fd2b.zip opie-4cfad0d1331a5e3adc8bc2599783750875e6fd2b.tar.gz opie-4cfad0d1331a5e3adc8bc2599783750875e6fd2b.tar.bz2 |
on removable medias take a look into .opiestorage.cf and read the list
of subdirs of the media where to search for documents. If this value isn't
set, it will reduce search to FS+"/Documents" so not the whole media is
searched.
ToDo: Work on mediummount so users can set this values.
-rw-r--r-- | library/global.cpp | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/library/global.cpp b/library/global.cpp index 05d23ac..6c0a66a 100644 --- a/library/global.cpp +++ b/library/global.cpp @@ -1,60 +1,61 @@ /********************************************************************** ** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. ** ** This file is part of the Qtopia Environment. ** ** This file may be distributed and/or modified under the terms of the ** GNU General Public License version 2 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. ** ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ** ** See http://www.trolltech.com/gpl/ for GPL licensing information. ** ** Contact info@trolltech.com if any conditions of this licensing are ** not clear to you. ** **********************************************************************/ #define QTOPIA_INTERNAL_LANGLIST #include <qpe/qpedebug.h> #include <qpe/global.h> #include <qpe/qdawg.h> #include <qpe/qpeapplication.h> #include <qpe/resource.h> #include <qpe/storage.h> #include <qpe/applnk.h> #include <qpe/qcopenvelope_qws.h> +#include <qpe/config.h> #include <qfile.h> #include <qlabel.h> #include <qtimer.h> #include <qmap.h> #include <qdict.h> #include <qdir.h> #include <qmessagebox.h> #include <qregexp.h> #include <stdlib.h> #include <sys/stat.h> #include <sys/wait.h> #include <sys/types.h> #include <fcntl.h> #include <unistd.h> #include <errno.h> #include <qwindowsystem_qws.h> // for qwsServer #include <qdatetime.h> #include <qfile.h> namespace { // checks if the storage should be searched bool checkStorage(const QString &path ){ // this is a small Config replacement cause config is too limited -zecke QFile file(path ); if(!file.open(IO_ReadOnly ) ) return true; QByteArray array = file.readAll(); QStringList list = QStringList::split('\n', QString( array ) ); @@ -737,70 +738,78 @@ QString Global::stringQuote(const QString& s) return r; } /*! Finds all documents on the system's document directories which match the filter \a mimefilter, and appends the resulting DocLnk objects to \a folder. */ void Global::findDocuments(DocLnkSet* folder, const QString &mimefilter) { QString homedocs = QString(getenv("HOME")) + "/Documents"; DocLnkSet d(homedocs,mimefilter); folder->appendFrom(d); /** let's do intellegint way of searching these files * a) the user don't want to check mediums global * b) the user wants to check but use the global options for it * c) the user wants to check it but not this medium * d) the user wants to check and this medium as well * * In all cases we need to apply a different mimefilter to * the medium. * a) mimefilter.isEmpty() we need to apply the responding filter * either the global or the one on the medium * * b) mimefilter is set to an application we need to find out if the * mimetypes are included in the mime mask of the medium */ StorageInfo storage; const QList<FileSystem> &fs = storage.fileSystems(); QListIterator<FileSystem> it ( fs ); for ( ; it.current(); ++it ) { if ( (*it)->isRemovable() ) { // let's find out if we should search on it - // this is a candidate look at the cf and see if we should search on it - QString path = (*it)->path(); - if( !checkStorage((*it)->path() + "/.opiestorage.cf" ) ) - continue; - DocLnkSet ide( path, mimefilter ); - folder->appendFrom(ide); + // this is a candidate look at the cf and see if we should search on it + QString path = (*it)->path(); + if( !checkStorage((*it)->path() + "/.opiestorage.cf" ) ) + continue; + Config conf((*it)->path() + "/.opiestorage.cf", Config::File ); + conf.setGroup("subdirs"); + QStringList subDirs = conf.readListEntry("subdirs",':'); + if (subDirs.isEmpty()) { + subDirs.append("Documents"); + } + for (unsigned c = 0; c < subDirs.count();++c) { + DocLnkSet ide( path+"/"+subDirs[c], mimefilter ); + folder->appendFrom(ide); + } } else if ( (*it)->disk() == "/dev/mtdblock6" || (*it)->disk() == "tmpfs" ) { QString path = (*it)->path() + "/Documents"; DocLnkSet ide( path, mimefilter ); folder->appendFrom(ide); } } } QStringList Global::languageList() { QString lang = getenv("LANG"); QStringList langs; langs.append(lang); int i = lang.find("."); if ( i > 0 ) lang = lang.left( i ); i = lang.find( "_" ); if ( i > 0 ) langs.append(lang.left(i)); return langs; } QStringList Global::helpPath() { QString qpeDir = QPEApplication::qpeDir(); QStringList path; QStringList langs = Global::languageList(); for (QStringList::ConstIterator it = langs.fromLast(); it!=langs.end(); --it) { QString lang = *it; if ( !lang.isEmpty() ) path += qpeDir + "/help/" + lang + "/html"; } |