summaryrefslogtreecommitdiff
path: root/src/plugins/qmljseditor/qmljshoverhandler.cpp
diff options
context:
space:
mode:
authorFawzi Mohamed <fawzi.mohamed@digia.com>2013-05-21 11:35:15 +0200
committerFawzi Mohamed <fawzi.mohamed@digia.com>2013-06-03 10:32:13 +0200
commit5a4cdc11cbf10e205e30bf118bc4e672a4d198af (patch)
treefac3cf6c123588121af2c69a37f535680ec26330 /src/plugins/qmljseditor/qmljshoverhandler.cpp
parent69a9dc3f1c411a3c10990102a1ae31fab28dc9d2 (diff)
downloadqt-creator-5a4cdc11cbf10e205e30bf118bc4e672a4d198af.tar.gz
qmljs: adding qrc support
Qmljs now keeps a cache of parsed qrc files, and can resolve "qrc:" links. This breaks the assumption that the name that the qml files has on the filesystem is the one that qml sees, and that contents of directories can be found just looking at file whose path starts with the directory path. Currently the first file is used when multiple qrc files contain the same path, but support for strict and weak path resolving is already there. At the moment only qrc files for projects that call updateQmljsCodeModel are updated. ChangeLog: QmljsSupport: Imports using qrc links are resolved. Task-number: QTCREATORBUG-8953 Change-Id: I695fac2692af2417d49c192c580a1c2e7b4873f4 Reviewed-by: Fawzi Mohamed <fawzi.mohamed@digia.com>
Diffstat (limited to 'src/plugins/qmljseditor/qmljshoverhandler.cpp')
-rw-r--r--src/plugins/qmljseditor/qmljshoverhandler.cpp7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/plugins/qmljseditor/qmljshoverhandler.cpp b/src/plugins/qmljseditor/qmljshoverhandler.cpp
index 7e816cf397..c33c1d13cd 100644
--- a/src/plugins/qmljseditor/qmljshoverhandler.cpp
+++ b/src/plugins/qmljseditor/qmljshoverhandler.cpp
@@ -43,6 +43,7 @@
#include <qmljs/parser/qmljsast_p.h>
#include <qmljs/parser/qmljsastfwd_p.h>
#include <qmljs/qmljsutils.h>
+#include <qmljs/qmljsqrcparser.h>
#include <texteditor/itexteditor.h>
#include <texteditor/basetexteditor.h>
#include <texteditor/helpitem.h>
@@ -134,9 +135,15 @@ static inline QString getModuleName(const ScopeChain &scopeChain, const Document
} else if (importInfo.isValid() && importInfo.type() == ImportInfo::DirectoryImport) {
const QString path = importInfo.path();
const QDir dir(qmlDocument->path());
+ // should probably try to make it relatve to some import path, not to the document path
QString relativeDir = dir.relativeFilePath(path);
const QString name = relativeDir.replace(QLatin1Char('/'), QLatin1Char('.'));
return name;
+ } else if (importInfo.isValid() && importInfo.type() == ImportInfo::QrcDirectoryImport) {
+ QString path = QrcParser::normalizedQrcDirectoryPath(importInfo.path());
+ path = path.mid(1, path.size() - ((path.size() > 1) ? 2 : 1));
+ const QString name = path.replace(QLatin1Char('/'), QLatin1Char('.'));
+ return name;
}
}
return QString();