From 5be738e56a5aee4dbd9eb073c3bede2f2ec18a6f Mon Sep 17 00:00:00 2001
From: Thomas Hartmann <Thomas.Hartmann@digia.com>
Date: Tue, 14 May 2013 15:35:38 +0200
Subject: [PATCH] QmlDesigner.ItemLibrary: Allow non qrc source files

Source files can also be local files relative to the
.metainfo file.

Change-Id: I8b5519a1bf42808a1bfa744b7520fc910eb2aeac
Reviewed-by: Marco Bubke <marco.bubke@digia.com>
---
 .../designercore/metainfo/itemlibraryinfo.cpp      | 14 +++++++++++++-
 .../designercore/metainfo/metainforeader.cpp       |  2 +-
 2 files changed, 14 insertions(+), 2 deletions(-)

diff --git a/src/plugins/qmldesigner/designercore/metainfo/itemlibraryinfo.cpp b/src/plugins/qmldesigner/designercore/metainfo/itemlibraryinfo.cpp
index 4b454125555..023590bd0c4 100644
--- a/src/plugins/qmldesigner/designercore/metainfo/itemlibraryinfo.cpp
+++ b/src/plugins/qmldesigner/designercore/metainfo/itemlibraryinfo.cpp
@@ -188,10 +188,22 @@ void ItemLibraryEntry::setIconPath(const QString &iconPath)
     m_data->iconPath = iconPath;
 }
 
+static QString getSourceForUrl(const QString &fileURl)
+{
+    Utils::FileReader fileReader;
+
+    if (fileReader.fetch(fileURl)) {
+        return fileReader.data();
+    } else {
+        return Utils::FileReader::fetchQrc(fileURl);
+    }
+}
+
 void ItemLibraryEntry::setQml(const QString &qml)
 {
     m_data->qml = qml;
-    m_data->qmlSource = Utils::FileReader::fetchQrc(qml);
+
+    m_data->qmlSource = getSourceForUrl(qml);
 }
 
 void ItemLibraryEntry::setRequiredImport(const QString &requiredImport)
diff --git a/src/plugins/qmldesigner/designercore/metainfo/metainforeader.cpp b/src/plugins/qmldesigner/designercore/metainfo/metainforeader.cpp
index 77fc504bb21..e512185c961 100644
--- a/src/plugins/qmldesigner/designercore/metainfo/metainforeader.cpp
+++ b/src/plugins/qmldesigner/designercore/metainfo/metainforeader.cpp
@@ -255,7 +255,7 @@ void MetaInfoReader::readPropertyProperty(const QString &name, const QVariant &v
 void MetaInfoReader::readQmlSourceProperty(const QString &name, const QVariant &value)
 {
     if (name == QLatin1String("source")) {
-        m_currentEntry.setQml(value.toString());
+        m_currentEntry.setQml(absoluteFilePathForDocument(value.toString()));
     } else {
         addError(tr("Unknown property for QmlSource %1").arg(name), currentSourceLocation());
         setParserState(Error);
-- 
GitLab