diff options
author | Leandro Melo <leandro.melo@nokia.com> | 2010-12-03 15:55:51 +0100 |
---|---|---|
committer | Leandro Melo <leandro.melo@nokia.com> | 2010-12-08 17:22:14 +0100 |
commit | 898bc97ccef541414f573f560b0a73d182ef49b9 (patch) | |
tree | 90bf3a245bb83e9cf36e965738ef898fbd64c223 /src/plugins/texteditor/snippets/snippetscollection.cpp | |
parent | f6146632231740ac7f1ba344e68a9c0db5ac222a (diff) | |
download | qt-creator-898bc97ccef541414f573f560b0a73d182ef49b9.tar.gz |
Snippets: Make it flexible for adding builtin snippets
Instead of in one XML embedded as a resource, now builtin
snippets can be specified on any XML distributed under share.
Diffstat (limited to 'src/plugins/texteditor/snippets/snippetscollection.cpp')
-rw-r--r-- | src/plugins/texteditor/snippets/snippetscollection.cpp | 33 |
1 files changed, 23 insertions, 10 deletions
diff --git a/src/plugins/texteditor/snippets/snippetscollection.cpp b/src/plugins/texteditor/snippets/snippetscollection.cpp index dd2531e7cc..72fa6086ef 100644 --- a/src/plugins/texteditor/snippets/snippetscollection.cpp +++ b/src/plugins/texteditor/snippets/snippetscollection.cpp @@ -100,10 +100,14 @@ int SnippetsCollection::Hint::index() const // SnippetsCollection SnippetsCollection::SnippetsCollection() : - m_builtInSnippetsPath(QLatin1String(":/texteditor/snippets/")), m_userSnippetsPath(Core::ICore::instance()->userResourcePath() + QLatin1String("/snippets/")), - m_snippetsFileName(QLatin1String("snippets.xml")) + m_userSnippetsFile(QLatin1String("snippets.xml")) { + QDir dir(Core::ICore::instance()->resourcePath() + QLatin1String("/snippets/")); + dir.setNameFilters(QStringList(QLatin1String("*.xml"))); + foreach (const QFileInfo &fi, dir.entryInfoList()) + m_builtInSnippetsFiles.append(fi.absoluteFilePath()); + connect(Core::ICore::instance(), SIGNAL(coreOpened()), this, SLOT(identifyGroups())); } @@ -261,10 +265,11 @@ Snippet SnippetsCollection::revertedSnippet(int index, const QString &groupId) c const Snippet &candidate = snippet(index, groupId); Q_ASSERT(candidate.isBuiltIn()); - const QList<Snippet> &builtIn = - readXML(m_builtInSnippetsPath + m_snippetsFileName, candidate.id()); - if (builtIn.size() == 1) - return builtIn.at(0); + foreach (const QString &fileName, m_builtInSnippetsFiles) { + const QList<Snippet> &builtIn = readXML(fileName, candidate.id()); + if (builtIn.size() == 1) + return builtIn.at(0); + } return Snippet(groupId); } @@ -272,7 +277,7 @@ void SnippetsCollection::reset(const QString &groupId) { clearSnippets(groupIndex(groupId)); - const QList<Snippet> &builtInSnippets = readXML(m_builtInSnippetsPath + m_snippetsFileName); + const QList<Snippet> &builtInSnippets = allBuiltInSnippets(); foreach (const Snippet &snippet, builtInSnippets) if (groupId == snippet.groupId()) insertSnippet(snippet); @@ -282,12 +287,12 @@ void SnippetsCollection::reload() { clearSnippets(); - const QList<Snippet> &builtInSnippets = readXML(m_builtInSnippetsPath + m_snippetsFileName); + const QList<Snippet> &builtInSnippets = allBuiltInSnippets(); QHash<QString, Snippet> activeBuiltInSnippets; foreach (const Snippet &snippet, builtInSnippets) activeBuiltInSnippets.insert(snippet.id(), snippet); - const QList<Snippet> &userSnippets = readXML(m_userSnippetsPath + m_snippetsFileName); + const QList<Snippet> &userSnippets = readXML(m_userSnippetsPath + m_userSnippetsFile); foreach (const Snippet &snippet, userSnippets) { if (snippet.isBuiltIn()) // This user snippet overrides the corresponding built-in snippet. @@ -302,7 +307,7 @@ void SnippetsCollection::reload() void SnippetsCollection::synchronize() { if (QFile::exists(m_userSnippetsPath) || QDir().mkpath(m_userSnippetsPath)) { - QFile file(m_userSnippetsPath + m_snippetsFileName); + QFile file(m_userSnippetsPath + m_userSnippetsFile); if (file.open(QFile::WriteOnly | QFile::Truncate)) { QXmlStreamWriter writer(&file); writer.setAutoFormatting(true); @@ -389,6 +394,14 @@ QList<Snippet> SnippetsCollection::readXML(const QString &fileName, const QStrin return snippets; } +QList<Snippet> SnippetsCollection::allBuiltInSnippets() const +{ + QList<Snippet> builtInSnippets; + foreach (const QString &fileName, m_builtInSnippetsFiles) + builtInSnippets.append(readXML(fileName)); + return builtInSnippets; +} + int SnippetsCollection::groupIndex(const QString &groupId) const { return m_groupIndexById.value(groupId); |