diff 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
line wrap: on
line diff
--- a/data/fileio/FileFinder.cpp	Wed Nov 28 17:45:37 2007 +0000
+++ b/data/fileio/FileFinder.cpp	Thu Nov 29 17:10:53 2007 +0000
@@ -378,15 +378,15 @@
 QString
 FileFinder::find(FileType type, QString location, QString lastKnownLocation)
 {
-    if (QFileInfo(location).exists()) return location;
-
-    if (FileSource::isRemote(location)) {
+    if (FileSource::canHandleScheme(location)) {
         if (FileSource(location).isAvailable()) {
             std::cerr << "FileFinder::find: ok, it's available... returning" << std::endl;
             return location;
         }
     }
 
+    if (QFileInfo(location).exists()) return location;
+
     QString foundAt = "";
 
     if ((foundAt = findRelative(location, lastKnownLocation)) != "") {
@@ -415,6 +415,9 @@
         fileName = QUrl(location).path().section('/', -1, -1,
                                                  QString::SectionSkipEmpty);
     } else {
+        if (QUrl(location).scheme() == "file") {
+            location = QUrl(location).toLocalFile();
+        }
         fileName = QFileInfo(location).fileName();
     }
 
@@ -423,6 +426,9 @@
         if (!FileSource(resolved).isAvailable()) resolved = "";
         std::cerr << "resolved: " << resolved.toStdString() << std::endl;
     } else {
+        if (QUrl(relativeTo).scheme() == "file") {
+            relativeTo = QUrl(relativeTo).toLocalFile();
+        }
         resolved = QFileInfo(relativeTo).dir().filePath(fileName);
         if (!QFileInfo(resolved).exists() ||
             !QFileInfo(resolved).isFile() ||