summaryrefslogtreecommitdiff
authorllornkcor <llornkcor>2005-08-14 01:56:52 (UTC)
committer llornkcor <llornkcor>2005-08-14 01:56:52 (UTC)
commit11644efb6f433c5def0341b8d086804ce457d5a5 (patch) (side-by-side diff)
tree5432a575837e77f3238aac8bdcc397586c45a21f
parent6ee18e3d11d5204ca6c8e885bc563ab34befdaec (diff)
downloadopie-11644efb6f433c5def0341b8d086804ce457d5a5.zip
opie-11644efb6f433c5def0341b8d086804ce457d5a5.tar.gz
opie-11644efb6f433c5def0341b8d086804ce457d5a5.tar.bz2
make assumption that Documents files will never be installed/written to /proc /dev /bin and similar places.. so we don't need to waste time scanning these.
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/launcher/documentlist.cpp8
1 files changed, 5 insertions, 3 deletions
diff --git a/core/launcher/documentlist.cpp b/core/launcher/documentlist.cpp
index fd385d6..35a5d56 100644
--- a/core/launcher/documentlist.cpp
+++ b/core/launcher/documentlist.cpp
@@ -91,65 +91,65 @@ public:
const QFileInfoList *lists[MAX_SEARCH_DEPTH];
unsigned int listPositions[MAX_SEARCH_DEPTH];
StorageInfo *storage;
int tid;
ServerInterface *serverGui;
bool needToSendAllDocLinks;
bool sendAppLnks;
bool sendDocLnks;
bool scanDocs;
};
/*
* scandocs will be read from Config
*/
DocumentList::DocumentList( ServerInterface *serverGui, bool /*scanDocs*/,
QObject *parent, const char *name )
: QObject( parent, name )
{
appLnkSet = new AppLnkSet( MimeType::appsFolderName() );
d = new DocumentListPrivate( serverGui );
d->needToSendAllDocLinks = false;
Config cfg( "Launcher" );
cfg.setGroup( "DocTab" );
d->scanDocs = cfg.readBoolEntry( "Enable", true );
odebug << "DocumentList::DocumentList() : scanDocs = " << d->scanDocs << "" << oendl;
- QTimer::singleShot( 10, this, SLOT( startInitialScan() ) );
+ QTimer::singleShot( 0, this, SLOT( startInitialScan() ) );
}
void DocumentList::startInitialScan()
{
reloadAppLnks();
reloadDocLnks();
}
DocumentList::~DocumentList()
{
delete appLnkSet;
delete d;
}
void DocumentList::add( const DocLnk& doc )
{
if ( d->serverGui && QFile::exists( doc.file() ) )
d->serverGui->documentAdded( doc );
}
void DocumentList::start()
{
resume();
}
void DocumentList::pause()
{
//odebug << "pause " << d->tid << "" << oendl;
killTimer( d->tid );
@@ -158,65 +158,65 @@ void DocumentList::pause()
void DocumentList::resume()
{
if ( d->tid == 0 ) {
d->tid = startTimer( 20 );
//odebug << "resumed " << d->tid << "" << oendl;
}
}
/*
void DocumentList::resend()
{
// Re-emits all the added items to the list (firstly letting everyone know to
// clear what they have as it is being sent again)
pause();
emit allRemoved();
QTimer::singleShot( 5, this, SLOT( resendWorker() ) );
}
void DocumentList::resendWorker()
{
const QList<DocLnk> &list = d->dls.children();
for ( QListIterator<DocLnk> it( list ); it.current(); ++it )
add( *(*it) );
resume();
}
*/
void DocumentList::rescan()
{
- //odebug << "rescan" << oendl;
+ owarn << "XXXXXXXXXXX rescan" << oendl;
pause();
d->initialize();
resume();
}
void DocumentList::timerEvent( QTimerEvent *te )
{
if ( te->timerId() == d->tid ) {
// Do 3 at a time
if ( d->serverGui )
d->serverGui->aboutToAddBegin();
for (int i = 0; i < 3; i++ ) {
const DocLnk *lnk = d->iterate();
if ( lnk ) {
add( *lnk );
} else {
// stop when done
pause();
if ( d->serverGui )
d->serverGui->documentScanningProgress( 100 );
if ( d->needToSendAllDocLinks )
sendAllDocLinks();
break;
}
}
if ( d->serverGui )
d->serverGui->aboutToAddEnd();
}
}
@@ -672,65 +672,67 @@ const QString DocumentListPrivate::nextFile()
QDir dir( docPaths[docPathsSearched] );
// odebug << "now using base path: " << docPaths[docPathsSearched] << "" << oendl;
docPathsSearched++;
if ( !dir.exists( ".Qtopia-ignore" ) ) {
listDirs[0] = new QDir( dir );
lists[0] = listDirs[0]->entryInfoList();
listPositions[0] = 0;
searchDepth = 0;
}
}
}
const QFileInfoList *fil = lists[searchDepth];
if (!fil) {
return QString::null;
}
QFileInfoList *fl = (QFileInfoList *)fil;
unsigned int pos = listPositions[searchDepth];
if ( pos >= fl->count() ) {
// go up a depth
delete listDirs[searchDepth];
listDirs[searchDepth] = 0;
lists[searchDepth] = 0;
listPositions[searchDepth] = 0;
searchDepth--;
} else {
const QFileInfo *fi = fl->at(pos);
listPositions[searchDepth]++;
QString bn = fi->fileName();
if ( bn[0] != '.' ) {
if ( fi->isDir() ) {
- if ( bn != "CVS" && bn != "Qtopia" && bn != "QtPalmtop" ) {
+ if ( bn != "CVS" && bn != "Qtopia" && bn != "QtPalmtop"
+ && bn != "proc" && bn != "dev" && bn != "bin" && bn != "usr"
+ && bn != "etc" && bn != "lib" && bn != "sbin" && bn != "tmp" && bn != "var") {
// go down a depth
QDir dir( fi->filePath() );
// odebug << "now going in to path: " << bn << "" << oendl;
if ( !dir.exists( ".Qtopia-ignore" ) ) {
if ( searchDepth < MAX_SEARCH_DEPTH - 1) {
searchDepth++;
listDirs[searchDepth] = new QDir( dir );
lists[searchDepth] = listDirs[searchDepth]->entryInfoList();
listPositions[searchDepth] = 0;
}
}
}
} else {
estimatedPercentScanned();
return fl->at(pos)->filePath();
}
}
}
}
return QString::null;
}
bool DocumentListPrivate::store( DocLnk* dl )
{
// if ( dl->fileKnown() && !dl->file().isEmpty() ) {
if ( dl && dl->fileKnown() ) {
dls.add( dl ); // store
return TRUE;
}