Diffstat (limited to 'core/launcher/documentlist.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | core/launcher/documentlist.cpp | 31 |
1 files changed, 21 insertions, 10 deletions
diff --git a/core/launcher/documentlist.cpp b/core/launcher/documentlist.cpp index 44ceb0c..d8e7a83 100644 --- a/core/launcher/documentlist.cpp +++ b/core/launcher/documentlist.cpp | |||
@@ -378,63 +378,63 @@ void DocumentList::DiffAppLnks() | |||
378 | AppLnk *j; | 378 | AppLnk *j; |
379 | bool found; | 379 | bool found; |
380 | 380 | ||
381 | while ( (j=it2.current()) ) { | 381 | while ( (j=it2.current()) ) { |
382 | it1 = appLnkSet->children(); | 382 | it1 = appLnkSet->children(); |
383 | found = false; | 383 | found = false; |
384 | while ( (i=it1.current()) ){ | 384 | while ( (i=it1.current()) ){ |
385 | if (strcmp(i->name().ascii(),j->name().ascii()) == 0) | 385 | if (strcmp(i->name().ascii(),j->name().ascii()) == 0) |
386 | found = true; | 386 | found = true; |
387 | ++it1; | 387 | ++it1; |
388 | } | 388 | } |
389 | if (!found) { | 389 | if (!found) { |
390 | odebug << "Item " << j->name().ascii() << " needs to be added" << oendl; | 390 | odebug << "Item " << j->name().ascii() << " needs to be added" << oendl; |
391 | d->serverGui->applicationAdded( j->type(), *j ); | 391 | d->serverGui->applicationAdded( j->type(), *j ); |
392 | } | 392 | } |
393 | ++it2; | 393 | ++it2; |
394 | } | 394 | } |
395 | 395 | ||
396 | it1 = appLnkSet->children(); | 396 | it1 = appLnkSet->children(); |
397 | while ( (i=it1.current()) ) { | 397 | while ( (i=it1.current()) ) { |
398 | it2 = appLnkSet2->children(); | 398 | it2 = appLnkSet2->children(); |
399 | found = false; | 399 | found = false; |
400 | while ( (j=it2.current()) ){ | 400 | while ( (j=it2.current()) ){ |
401 | if (strcmp(i->name().ascii(),j->name().ascii()) == 0) | 401 | if (strcmp(i->name().ascii(),j->name().ascii()) == 0) |
402 | found = true; | 402 | found = true; |
403 | ++it2; | 403 | ++it2; |
404 | } | 404 | } |
405 | if (!found) { | 405 | if (!found) { |
406 | odebug << "Item " << i->name().ascii() << " needs to be removed" << oendl; | 406 | odebug << "Item " << i->name().ascii() << " needs to be removed" << oendl; |
407 | d->serverGui->applicationRemoved( i->type(), *i ); | 407 | d->serverGui->applicationRemoved( i->type(), *i ); |
408 | } | 408 | } |
409 | 409 | ||
410 | ++it1; | 410 | ++it1; |
411 | } | 411 | } |
412 | 412 | ||
413 | delete appLnkSet; | 413 | delete appLnkSet; |
414 | appLnkSet = appLnkSet2; | 414 | appLnkSet = appLnkSet2; |
415 | 415 | ||
416 | } | 416 | } |
417 | void DocumentList::storageChanged() | 417 | void DocumentList::storageChanged() |
418 | { | 418 | { |
419 | QTime t; | 419 | QTime t; |
420 | // ### can implement better | 420 | // ### can implement better |
421 | 421 | ||
422 | t.start(); | 422 | t.start(); |
423 | DiffAppLnks(); | 423 | DiffAppLnks(); |
424 | // reloadAppLnks(); | 424 | // reloadAppLnks(); |
425 | odebug << "Reload App links took " << t.elapsed() << " ms" << oendl; | 425 | odebug << "Reload App links took " << t.elapsed() << " ms" << oendl; |
426 | reloadDocLnks(); | 426 | reloadDocLnks(); |
427 | // odebug << "Reload links took " << t.elapsed() << " ms " << oendl; | 427 | // odebug << "Reload links took " << t.elapsed() << " ms " << oendl; |
428 | odebug << "Reload All links took " << t.elapsed() << " ms" << oendl; | 428 | odebug << "Reload All links took " << t.elapsed() << " ms" << oendl; |
429 | // ### Optimization opportunity | 429 | // ### Optimization opportunity |
430 | // Could be a bit more intelligent and somehow work out which | 430 | // Could be a bit more intelligent and somehow work out which |
431 | // mtab entry has changed and then only scan that and add and remove | 431 | // mtab entry has changed and then only scan that and add and remove |
432 | // links appropriately. | 432 | // links appropriately. |
433 | // rescan(); | 433 | // rescan(); |
434 | } | 434 | } |
435 | 435 | ||
436 | void DocumentList::sendAllDocLinks() | 436 | void DocumentList::sendAllDocLinks() |
437 | { | 437 | { |
438 | if ( d->tid != 0 ) { | 438 | if ( d->tid != 0 ) { |
439 | // We are in the middle of scanning, set a flag so | 439 | // We are in the middle of scanning, set a flag so |
440 | // we do this when we finish our scanning | 440 | // we do this when we finish our scanning |
@@ -447,25 +447,36 @@ void DocumentList::sendAllDocLinks() | |||
447 | for ( QListIterator<DocLnk> it( d->dls.children() ); it.current(); ++it ) { | 447 | for ( QListIterator<DocLnk> it( d->dls.children() ); it.current(); ++it ) { |
448 | DocLnk *doc = it.current(); | 448 | DocLnk *doc = it.current(); |
449 | QFileInfo fi( doc->file() ); | 449 | QFileInfo fi( doc->file() ); |
450 | if ( !fi.exists() ) | 450 | if ( !fi.exists() ) |
451 | continue; | 451 | continue; |
452 | 452 | ||
453 | bool fake = !doc->linkFileKnown(); | 453 | bool fake = !doc->linkFileKnown(); |
454 | if ( !fake ) { | 454 | if ( !fake ) { |
455 | QFile f( doc->linkFile() ); | 455 | QFile f( doc->linkFile() ); |
456 | if ( f.open( IO_ReadOnly ) ) { | 456 | if ( f.open( IO_ReadOnly ) ) { |
457 | QTextStream ts( &f ); | 457 | QTextStream ts( &f ); |
458 | ts.setEncoding( QTextStream::UnicodeUTF8 ); | 458 | ts.setEncoding( QTextStream::UnicodeUTF8 ); |
459 | contents += ts.read(); | 459 | QString docLnk = ts.read(); |
460 | // Strip out the (stale) LinkFile entry | ||
461 | int start = docLnk.find( "\nLinkFile = " ) + 1; | ||
462 | if ( start > 0 ) { | ||
463 | int end = docLnk.find( "\n", start + 1 ) + 1; | ||
464 | contents += docLnk.left(start); | ||
465 | contents += docLnk.mid(end); | ||
466 | } else { | ||
467 | contents += docLnk; | ||
468 | } | ||
469 | contents += "LinkFile = " + doc->linkFile() + "\n"; | ||
470 | |||
460 | f.close(); | 471 | f.close(); |
461 | } else | 472 | } else |
462 | fake = TRUE; | 473 | fake = TRUE; |
463 | } | 474 | } |
464 | if (fake) { | 475 | if (fake) { |
465 | contents += "[Desktop Entry]\n"; // No tr | 476 | contents += "[Desktop Entry]\n"; // No tr |
466 | contents += "Categories = " + // No tr | 477 | contents += "Categories = " + // No tr |
467 | cats.labels("Document View",doc->categories()).join(";") + "\n"; // No tr | 478 | cats.labels("Document View",doc->categories()).join(";") + "\n"; // No tr |
468 | contents += "Name = "+doc->name()+"\n"; // No tr | 479 | contents += "Name = "+doc->name()+"\n"; // No tr |
469 | contents += "Type = "+doc->type()+"\n"; // No tr | 480 | contents += "Type = "+doc->type()+"\n"; // No tr |
470 | } | 481 | } |
471 | contents += "File = "+doc->file()+"\n"; // No tr // (resolves path) | 482 | contents += "File = "+doc->file()+"\n"; // No tr // (resolves path) |