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 | |||
@@ -384,51 +384,51 @@ void DocumentList::DiffAppLnks() | |||
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 | } |
@@ -453,13 +453,24 @@ void DocumentList::sendAllDocLinks() | |||
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 |