Improve Qml code model import handling.

* Fill the snapshot with files that could be imported.
* Implement package imports.

* The qmldir file is not parsed yet.

Reviewed-by: Erik Verbruggen
This commit is contained in:
Christian Kamm
2010-03-16 16:34:33 +01:00
parent 62c41defb4
commit 9ea01cf5fb
17 changed files with 251 additions and 175 deletions

View File

@@ -55,9 +55,13 @@ public:
virtual QmlJS::Snapshot snapshot() const;
virtual void updateSourceFiles(const QStringList &files);
virtual void updateSourceDirectories(const QStringList &directories);
void emitDocumentUpdated(QmlJS::Document::Ptr doc);
virtual void setProjectImportPaths(const QStringList &importPaths);
virtual QStringList importPaths() const;
Q_SIGNALS:
void projectPathChanged(const QString &projectPath);
void aboutToRemoveFiles(const QStringList &files);
@@ -75,6 +79,7 @@ protected:
};
QFuture<void> refreshSourceFiles(const QStringList &sourceFiles);
QFuture<void> refreshSourceDirectories(const QStringList &sourceDirectories);
QMap<QString, WorkingCopy> buildWorkingCopyList();
static void parse(QFutureInterface<void> &future,
@@ -82,6 +87,11 @@ protected:
QStringList files,
ModelManager *modelManager);
static void parseDirectories(QFutureInterface<void> &future,
QMap<QString, WorkingCopy> workingCopy,
QStringList directories,
ModelManager *modelManager);
void loadQmlTypeDescriptions();
private:
@@ -90,6 +100,8 @@ private:
mutable QMutex m_mutex;
Core::ICore *m_core;
QmlJS::Snapshot _snapshot;
QStringList m_projectImportPaths;
QStringList m_defaultImportPaths;
QFutureSynchronizer<void> m_synchronizer;
};