Remove "All rights reserved" line from license headers.
[profile/ivi/qtdeclarative.git] / src / declarative / qml / qdeclarativedirparser.cpp
index 6798870..f7d5be3 100644 (file)
@@ -1,8 +1,7 @@
 /****************************************************************************
 **
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
 **
 ** This file is part of the QtDeclarative module of the Qt Toolkit.
 **
 **
 **
 **
+**
 ** $QT_END_LICENSE$
 **
 ****************************************************************************/
 
-#include "private/qdeclarativedirparser_p.h"
+#include "qdeclarativedirparser_p.h"
 #include "qdeclarativeerror.h"
-#include <private/qdeclarativeglobal_p.h>
+#include "qdeclarativeglobal_p.h"
 
 #include <QtCore/QTextStream>
 #include <QtCore/QFile>
@@ -103,19 +103,20 @@ bool QDeclarativeDirParser::parse()
     _errors.clear();
     _plugins.clear();
     _components.clear();
+    _scripts.clear();
 
     if (_source.isEmpty() && !_filePathSouce.isEmpty()) {
         QFile file(_filePathSouce);
         if (!QDeclarative_isFileCaseCorrect(_filePathSouce)) {
             QDeclarativeError error;
-            error.setDescription(QString::fromUtf8("cannot load module \"%1\": File name case mismatch for \"%2\"").arg(_url.toString()).arg(_filePathSouce));
+            error.setDescription(QString::fromUtf8("cannot load module \"$$URI$$\": File name case mismatch for \"%1\"").arg(_filePathSouce));
             _errors.prepend(error);
             return false;
         } else if (file.open(QFile::ReadOnly)) {
             _source = QString::fromUtf8(file.readAll());
         } else {
             QDeclarativeError error;
-            error.setDescription(QString::fromUtf8("module \"%1\" definition \"%2\" not readable").arg(_url.toString()).arg(_filePathSouce));
+            error.setDescription(QString::fromUtf8("module \"$$URI$$\" definition \"%1\" not readable").arg(_filePathSouce));
             _errors.prepend(error);
             return false;
         }
@@ -186,7 +187,7 @@ bool QDeclarativeDirParser::parse()
                             QString::fromUtf8("internal types require 2 arguments, but %1 were provided").arg(sectionCount - 1));
                 continue;
             }
-            Component entry(sections[1].toUtf8(), sections[2], -1, -1);
+            Component entry(sections[1], sections[2], -1, -1);
             entry.internal = true;
             _components.append(entry);
         } else if (sections[0] == QLatin1String("typeinfo")) {
@@ -202,7 +203,7 @@ bool QDeclarativeDirParser::parse()
 
         } else if (sectionCount == 2) {
             // No version specified (should only be used for relative qmldir files)
-            const Component entry(sections[0].toUtf8(), sections[1], -1, -1);
+            const Component entry(sections[0], sections[1], -1, -1);
             _components.append(entry);
         } else if (sectionCount == 3) {
             const QString &version = sections[1];
@@ -220,9 +221,16 @@ bool QDeclarativeDirParser::parse()
                     const int minorVersion = version.mid(dotIndex + 1).toInt(&validVersionNumber);
 
                     if (validVersionNumber) {
-                        const Component entry(sections[0].toUtf8(), sections[2], majorVersion, minorVersion);
-
-                        _components.append(entry);
+                        const QString &fileName = sections[2];
+
+                        if (fileName.endsWith(QLatin1String(".js"))) {
+                            // A 'js' extension indicates a namespaced script import
+                            const Script entry(sections[0], fileName, majorVersion, minorVersion);
+                            _scripts.append(entry);
+                        } else {
+                            const Component entry(sections[0], fileName, majorVersion, minorVersion);
+                            _components.append(entry);
+                        }
                     }
                 }
             }
@@ -253,9 +261,16 @@ bool QDeclarativeDirParser::hasError() const
     return false;
 }
 
-QList<QDeclarativeError> QDeclarativeDirParser::errors() const
+QList<QDeclarativeError> QDeclarativeDirParser::errors(const QString &uri) const
 {
-    return _errors;
+    QList<QDeclarativeError> errors = _errors;
+    for (int i = 0; i < errors.size(); ++i) {
+        QDeclarativeError &e = errors[i];
+        QString description = e.description();
+        description.replace(QLatin1String("$$URI$$"), uri);
+        e.setDescription(description);
+    }
+    return errors;
 }
 
 QList<QDeclarativeDirParser::Plugin> QDeclarativeDirParser::plugins() const
@@ -268,6 +283,11 @@ QList<QDeclarativeDirParser::Component> QDeclarativeDirParser::components() cons
     return _components;
 }
 
+QList<QDeclarativeDirParser::Script> QDeclarativeDirParser::scripts() const
+{
+    return _scripts;
+}
+
 #ifdef QT_CREATOR
 QList<QDeclarativeDirParser::TypeInfo> QDeclarativeDirParser::typeInfos() const
 {