summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/launcher/documentlist.cpp7
1 files changed, 7 insertions, 0 deletions
diff --git a/core/launcher/documentlist.cpp b/core/launcher/documentlist.cpp
index 39dc7c9..63f853e 100644
--- a/core/launcher/documentlist.cpp
+++ b/core/launcher/documentlist.cpp
@@ -380,247 +380,254 @@ void DocumentList::sendAllDocLinks()
380 //qDebug( "sending length %d", contents.length() ); 380 //qDebug( "sending length %d", contents.length() );
381#ifndef QT_NO_COP 381#ifndef QT_NO_COP
382 QCopEnvelope e( "QPE/Desktop", "docLinks(QString)" ); 382 QCopEnvelope e( "QPE/Desktop", "docLinks(QString)" );
383 e << contents; 383 e << contents;
384#endif 384#endif
385 //qDebug( "================ \n\n%s\n\n===============", contents.latin1() ); 385 //qDebug( "================ \n\n%s\n\n===============", contents.latin1() );
386 386
387 d->needToSendAllDocLinks = false; 387 d->needToSendAllDocLinks = false;
388} 388}
389 389
390 390
391 391
392 392
393 393
394 394
395 395
396 396
397 397
398 398
399 399
400 400
401 401
402 402
403 403
404 404
405 405
406 406
407 407
408 408
409 409
410 410
411 411
412 412
413DocumentListPrivate::DocumentListPrivate( ServerInterface *gui ) 413DocumentListPrivate::DocumentListPrivate( ServerInterface *gui )
414{ 414{
415 storage = new StorageInfo( this ); 415 storage = new StorageInfo( this );
416 serverGui = gui; 416 serverGui = gui;
417 if ( serverGui ) { 417 if ( serverGui ) {
418 sendAppLnks = serverGui->requiresApplications(); 418 sendAppLnks = serverGui->requiresApplications();
419 sendDocLnks = serverGui->requiresDocuments(); 419 sendDocLnks = serverGui->requiresDocuments();
420 } else { 420 } else {
421 sendAppLnks = false; 421 sendAppLnks = false;
422 sendDocLnks = false; 422 sendDocLnks = false;
423 } 423 }
424 for ( int i = 0; i < MAX_SEARCH_DEPTH; i++ ) { 424 for ( int i = 0; i < MAX_SEARCH_DEPTH; i++ ) {
425 listDirs[i] = 0; 425 listDirs[i] = 0;
426 lists[i] = 0; 426 lists[i] = 0;
427 listPositions[i] = 0; 427 listPositions[i] = 0;
428 } 428 }
429 initialize(); 429 initialize();
430 tid = 0; 430 tid = 0;
431} 431}
432 432
433void DocumentListPrivate::appendDocpath(FileSystem*fs) 433void DocumentListPrivate::appendDocpath(FileSystem*fs)
434{ 434{
435 QDir defPath(fs->path()+"/Documents"); 435 QDir defPath(fs->path()+"/Documents");
436 QFileInfo f(fs->path()+"/.opiestorage.cf"); 436 QFileInfo f(fs->path()+"/.opiestorage.cf");
437 if (!f.exists()) { 437 if (!f.exists()) {
438 Mediadlg dlg(fs); 438 Mediadlg dlg(fs);
439 if (QDialog::Accepted != QPEApplication::execDialog( &dlg )) { 439 if (QDialog::Accepted != QPEApplication::execDialog( &dlg )) {
440 return; 440 return;
441 } 441 }
442 } 442 }
443 Config conf(f.filePath(), Config::File ); 443 Config conf(f.filePath(), Config::File );
444 conf.setGroup("main");
445 if (!conf.readBoolEntry("check",false)) {
446 return;
447 }
444 conf.setGroup("subdirs"); 448 conf.setGroup("subdirs");
445 bool read_all = conf.readBoolEntry("wholemedia",true); 449 bool read_all = conf.readBoolEntry("wholemedia",true);
446 if (read_all) { 450 if (read_all) {
447 docPaths+=fs->path(); 451 docPaths+=fs->path();
448 return; 452 return;
449 } 453 }
450 QStringList subDirs = conf.readListEntry("subdirs",':'); 454 QStringList subDirs = conf.readListEntry("subdirs",':');
451 if (subDirs.isEmpty()) { 455 if (subDirs.isEmpty()) {
452 if (defPath.exists()) { 456 if (defPath.exists()) {
453 docPaths+=defPath.path(); 457 docPaths+=defPath.path();
454 } 458 }
455 return; 459 return;
456 } 460 }
457 for (unsigned c = 0; c < subDirs.count();++c) { 461 for (unsigned c = 0; c < subDirs.count();++c) {
458 QDir docDir(QString(fs->path()+"/"+subDirs[c])); 462 QDir docDir(QString(fs->path()+"/"+subDirs[c]));
459 if (docDir.exists()) { 463 if (docDir.exists()) {
460 docPaths+=docDir.path(); 464 docPaths+=docDir.path();
461 } 465 }
462 } 466 }
463} 467}
464 468
465void DocumentListPrivate::initialize() 469void DocumentListPrivate::initialize()
466{ 470{
467 // Reset 471 // Reset
468 dls.clear(); 472 dls.clear();
469 docPaths.clear(); 473 docPaths.clear();
470 reference.clear(); 474 reference.clear();
471 475
472 QDir docDir( QPEApplication::documentDir() ); 476 QDir docDir( QPEApplication::documentDir() );
473 if ( docDir.exists() ) 477 if ( docDir.exists() )
474 docPaths += QPEApplication::documentDir(); 478 docPaths += QPEApplication::documentDir();
475 int i = 1; 479 int i = 1;
476 const QList<FileSystem> &fs = storage->fileSystems(); 480 const QList<FileSystem> &fs = storage->fileSystems();
477 QListIterator<FileSystem> it( fs ); 481 QListIterator<FileSystem> it( fs );
478 for ( ; it.current(); ++it ) { 482 for ( ; it.current(); ++it ) {
479 if ( (*it)->isRemovable() ) { 483 if ( (*it)->isRemovable() ) {
480 appendDocpath((*it)); 484 appendDocpath((*it));
481 ++i; 485 ++i;
482 } 486 }
483 } 487 }
484 488
485 for ( int i = 0; i < MAX_SEARCH_DEPTH; ++i ) { 489 for ( int i = 0; i < MAX_SEARCH_DEPTH; ++i ) {
486 if ( listDirs[i] ) { 490 if ( listDirs[i] ) {
487 delete listDirs[i]; 491 delete listDirs[i];
488 listDirs[i] = 0; 492 listDirs[i] = 0;
489 } 493 }
490 lists[i] = 0; 494 lists[i] = 0;
491 listPositions[i] = 0; 495 listPositions[i] = 0;
492 } 496 }
493 497
494 docPathsSearched = 0; 498 docPathsSearched = 0;
495 searchDepth = -1; 499 searchDepth = -1;
496 state = Find; 500 state = Find;
497 dit = 0; 501 dit = 0;
498} 502}
499 503
500 504
501DocumentListPrivate::~DocumentListPrivate() 505DocumentListPrivate::~DocumentListPrivate()
502{ 506{
503 for ( int i = 0; i < MAX_SEARCH_DEPTH; i++ ) 507 for ( int i = 0; i < MAX_SEARCH_DEPTH; i++ )
504 if ( listDirs[i] ) 508 if ( listDirs[i] )
505 delete listDirs[i]; 509 delete listDirs[i];
506 delete dit; 510 delete dit;
507} 511}
508 512
509 513
510void DocumentListPrivate::estimatedPercentScanned() 514void DocumentListPrivate::estimatedPercentScanned()
511{ 515{
512 double overallProgress = 0.0; 516 double overallProgress = 0.0;
513 double levelWeight = 75.0; 517 double levelWeight = 75.0;
514 518
515 int topCount = docPaths.count(); 519 int topCount = docPaths.count();
516 if ( topCount > 1 ) { 520 if ( topCount > 1 ) {
517 levelWeight = levelWeight / topCount; 521 levelWeight = levelWeight / topCount;
518 overallProgress += (docPathsSearched - 1) * levelWeight; 522 overallProgress += (docPathsSearched - 1) * levelWeight;
519 } 523 }
520 524
521 for ( int d = 0; d <= searchDepth; d++ ) { 525 for ( int d = 0; d <= searchDepth; d++ ) {
522 if ( listDirs[d] ) { 526 if ( listDirs[d] ) {
523 int items = lists[d]->count(); 527 int items = lists[d]->count();
524 if ( items > 1 ) { 528 if ( items > 1 ) {
525 levelWeight = levelWeight / items; 529 levelWeight = levelWeight / items;
526 // Take in to account "." and ".." 530 // Take in to account "." and ".."
527 overallProgress += (listPositions[d] - 3) * levelWeight; 531 overallProgress += (listPositions[d] - 3) * levelWeight;
528 } 532 }
529 } else { 533 } else {
530 break; 534 break;
531 } 535 }
532 } 536 }
533 537
534 // qDebug( "overallProgress: %f", overallProgress ); 538 // qDebug( "overallProgress: %f", overallProgress );
535 539
536 if ( serverGui ) 540 if ( serverGui )
537 serverGui->documentScanningProgress( (int)overallProgress ); 541 serverGui->documentScanningProgress( (int)overallProgress );
538} 542}
539 543
540 544
541const QString DocumentListPrivate::nextFile() 545const QString DocumentListPrivate::nextFile()
542{ 546{
543 while ( TRUE ) { 547 while ( TRUE ) {
544 while ( searchDepth < 0 ) { 548 while ( searchDepth < 0 ) {
545 // go to next base path 549 // go to next base path
546 if ( docPathsSearched >= docPaths.count() ) { 550 if ( docPathsSearched >= docPaths.count() ) {
547 // end of base paths 551 // end of base paths
548 return QString::null; 552 return QString::null;
549 } else { 553 } else {
550 QDir dir( docPaths[docPathsSearched] ); 554 QDir dir( docPaths[docPathsSearched] );
551 // qDebug("now using base path: %s", docPaths[docPathsSearched].latin1() ); 555 // qDebug("now using base path: %s", docPaths[docPathsSearched].latin1() );
552 docPathsSearched++; 556 docPathsSearched++;
553 if ( !dir.exists( ".Qtopia-ignore" ) ) { 557 if ( !dir.exists( ".Qtopia-ignore" ) ) {
554 listDirs[0] = new QDir( dir ); 558 listDirs[0] = new QDir( dir );
555 lists[0] = listDirs[0]->entryInfoList(); 559 lists[0] = listDirs[0]->entryInfoList();
556 listPositions[0] = 0; 560 listPositions[0] = 0;
557 searchDepth = 0; 561 searchDepth = 0;
558 } 562 }
559 } 563 }
560 } 564 }
561 565
562 const QFileInfoList *fil = lists[searchDepth]; 566 const QFileInfoList *fil = lists[searchDepth];
567 if (!fil) {
568 return QString::null;
569 }
563 QFileInfoList *fl = (QFileInfoList *)fil; 570 QFileInfoList *fl = (QFileInfoList *)fil;
564 unsigned int pos = listPositions[searchDepth]; 571 unsigned int pos = listPositions[searchDepth];
565 572
566 if ( pos >= fl->count() ) { 573 if ( pos >= fl->count() ) {
567 // go up a depth 574 // go up a depth
568 delete listDirs[searchDepth]; 575 delete listDirs[searchDepth];
569 listDirs[searchDepth] = 0; 576 listDirs[searchDepth] = 0;
570 lists[searchDepth] = 0; 577 lists[searchDepth] = 0;
571 listPositions[searchDepth] = 0; 578 listPositions[searchDepth] = 0;
572 searchDepth--; 579 searchDepth--;
573 } else { 580 } else {
574 const QFileInfo *fi = fl->at(pos); 581 const QFileInfo *fi = fl->at(pos);
575 listPositions[searchDepth]++; 582 listPositions[searchDepth]++;
576 QString bn = fi->fileName(); 583 QString bn = fi->fileName();
577 if ( bn[0] != '.' ) { 584 if ( bn[0] != '.' ) {
578 if ( fi->isDir() ) { 585 if ( fi->isDir() ) {
579 if ( bn != "CVS" && bn != "Qtopia" && bn != "QtPalmtop" ) { 586 if ( bn != "CVS" && bn != "Qtopia" && bn != "QtPalmtop" ) {
580 // go down a depth 587 // go down a depth
581 QDir dir( fi->filePath() ); 588 QDir dir( fi->filePath() );
582 // qDebug("now going in to path: %s", bn.latin1() ); 589 // qDebug("now going in to path: %s", bn.latin1() );
583 if ( !dir.exists( ".Qtopia-ignore" ) ) { 590 if ( !dir.exists( ".Qtopia-ignore" ) ) {
584 if ( searchDepth < MAX_SEARCH_DEPTH - 1) { 591 if ( searchDepth < MAX_SEARCH_DEPTH - 1) {
585 searchDepth++; 592 searchDepth++;
586 listDirs[searchDepth] = new QDir( dir ); 593 listDirs[searchDepth] = new QDir( dir );
587 lists[searchDepth] = listDirs[searchDepth]->entryInfoList(); 594 lists[searchDepth] = listDirs[searchDepth]->entryInfoList();
588 listPositions[searchDepth] = 0; 595 listPositions[searchDepth] = 0;
589 } 596 }
590 } 597 }
591 } 598 }
592 } else { 599 } else {
593 estimatedPercentScanned(); 600 estimatedPercentScanned();
594 return fl->at(pos)->filePath(); 601 return fl->at(pos)->filePath();
595 } 602 }
596 } 603 }
597 } 604 }
598 } 605 }
599 606
600 return QString::null; 607 return QString::null;
601} 608}
602 609
603 610
604bool DocumentListPrivate::store( DocLnk* dl ) 611bool DocumentListPrivate::store( DocLnk* dl )
605{ 612{
606 // if ( dl->fileKnown() && !dl->file().isEmpty() ) { 613 // if ( dl->fileKnown() && !dl->file().isEmpty() ) {
607 if ( dl && dl->fileKnown() ) { 614 if ( dl && dl->fileKnown() ) {
608 dls.add( dl ); // store 615 dls.add( dl ); // store
609 return TRUE; 616 return TRUE;
610 } 617 }
611 618
612 // don't store - delete 619 // don't store - delete
613 delete dl; 620 delete dl;
614 return FALSE; 621 return FALSE;
615} 622}
616 623
617 624
618 #define MAGIC_NUMBER((void*)2) 625 #define MAGIC_NUMBER((void*)2)
619 626
620const DocLnk *DocumentListPrivate::iterate() 627const DocLnk *DocumentListPrivate::iterate()
621{ 628{
622 if ( state == Find ) { 629 if ( state == Find ) {
623 //qDebug("state Find"); 630 //qDebug("state Find");
624 QString file = nextFile(); 631 QString file = nextFile();
625 while ( !file.isNull() ) { 632 while ( !file.isNull() ) {
626 if ( file.right(8) == ".desktop" ) { // No tr 633 if ( file.right(8) == ".desktop" ) { // No tr