comparison data/fileio/FileFinder.cpp @ 346:a9ccd644f3bf

* Attempt to fix finding of file:/// URLs * Fix incorrect reassignment of source model in layers that had no source model previously, when replacing a null main model
author Chris Cannam
date Thu, 29 Nov 2007 17:10:53 +0000
parents c324d410b096
children
comparison
equal deleted inserted replaced
345:700cd3350391 346:a9ccd644f3bf
376 } 376 }
377 377
378 QString 378 QString
379 FileFinder::find(FileType type, QString location, QString lastKnownLocation) 379 FileFinder::find(FileType type, QString location, QString lastKnownLocation)
380 { 380 {
381 if (QFileInfo(location).exists()) return location; 381 if (FileSource::canHandleScheme(location)) {
382
383 if (FileSource::isRemote(location)) {
384 if (FileSource(location).isAvailable()) { 382 if (FileSource(location).isAvailable()) {
385 std::cerr << "FileFinder::find: ok, it's available... returning" << std::endl; 383 std::cerr << "FileFinder::find: ok, it's available... returning" << std::endl;
386 return location; 384 return location;
387 } 385 }
388 } 386 }
387
388 if (QFileInfo(location).exists()) return location;
389 389
390 QString foundAt = ""; 390 QString foundAt = "";
391 391
392 if ((foundAt = findRelative(location, lastKnownLocation)) != "") { 392 if ((foundAt = findRelative(location, lastKnownLocation)) != "") {
393 return foundAt; 393 return foundAt;
413 413
414 if (FileSource::isRemote(location)) { 414 if (FileSource::isRemote(location)) {
415 fileName = QUrl(location).path().section('/', -1, -1, 415 fileName = QUrl(location).path().section('/', -1, -1,
416 QString::SectionSkipEmpty); 416 QString::SectionSkipEmpty);
417 } else { 417 } else {
418 if (QUrl(location).scheme() == "file") {
419 location = QUrl(location).toLocalFile();
420 }
418 fileName = QFileInfo(location).fileName(); 421 fileName = QFileInfo(location).fileName();
419 } 422 }
420 423
421 if (FileSource::isRemote(relativeTo)) { 424 if (FileSource::isRemote(relativeTo)) {
422 resolved = QUrl(relativeTo).resolved(fileName).toString(); 425 resolved = QUrl(relativeTo).resolved(fileName).toString();
423 if (!FileSource(resolved).isAvailable()) resolved = ""; 426 if (!FileSource(resolved).isAvailable()) resolved = "";
424 std::cerr << "resolved: " << resolved.toStdString() << std::endl; 427 std::cerr << "resolved: " << resolved.toStdString() << std::endl;
425 } else { 428 } else {
429 if (QUrl(relativeTo).scheme() == "file") {
430 relativeTo = QUrl(relativeTo).toLocalFile();
431 }
426 resolved = QFileInfo(relativeTo).dir().filePath(fileName); 432 resolved = QFileInfo(relativeTo).dir().filePath(fileName);
427 if (!QFileInfo(resolved).exists() || 433 if (!QFileInfo(resolved).exists() ||
428 !QFileInfo(resolved).isFile() || 434 !QFileInfo(resolved).isFile() ||
429 !QFileInfo(resolved).isReadable()) { 435 !QFileInfo(resolved).isReadable()) {
430 resolved = ""; 436 resolved = "";