diff options
author | Eike Ziller <eike.ziller@theqtcompany.com> | 2015-02-05 14:37:16 +0100 |
---|---|---|
committer | Eike Ziller <eike.ziller@theqtcompany.com> | 2015-02-17 15:19:13 +0000 |
commit | afa2212f8dc2b20d5b0734993beba00c1c60e701 (patch) | |
tree | 8947a70ed7ba8f9174acd07cd44fc1897c3510bf /src/libs/utils/mimetypes/mimeprovider.cpp | |
parent | 337339004843bc968e90a45cf24b9272b8372ba1 (diff) |
MimeDatabase: Allow overriding pattern and magic matchers of mime types
Change-Id: I1e2f59c98ab69ccee1eb2eaa8bc6ce918302c6cb
Reviewed-by: David Schulz <david.schulz@theqtcompany.com>
Diffstat (limited to 'src/libs/utils/mimetypes/mimeprovider.cpp')
-rw-r--r-- | src/libs/utils/mimetypes/mimeprovider.cpp | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/libs/utils/mimetypes/mimeprovider.cpp b/src/libs/utils/mimetypes/mimeprovider.cpp index be5f962d74..104c2c727c 100644 --- a/src/libs/utils/mimetypes/mimeprovider.cpp +++ b/src/libs/utils/mimetypes/mimeprovider.cpp @@ -803,6 +803,32 @@ QMap<int, QList<MimeMagicRule> > MimeXMLProvider::magicRulesForMimeType(const Mi return result; } +void MimeXMLProvider::setGlobPatternsForMimeType(const MimeType &mimeType, const QStringList &patterns) +{ + // remove all previous globs + m_mimeTypeGlobs.removeMimeType(mimeType.name()); + // add new patterns as case-insensitive default-weight patterns + foreach (const QString &pattern, patterns) + addGlobPattern(MimeGlobPattern(pattern, mimeType.name())); + mimeType.d->globPatterns = patterns; +} + +void MimeXMLProvider::setMagicRulesForMimeType(const MimeType &mimeType, const QMap<int, QList<MimeMagicRule> > &rules) +{ + // remove all previous rules + QMutableListIterator<MimeMagicRuleMatcher> matcherIt(m_magicMatchers); + while (matcherIt.hasNext()) { + if (matcherIt.next().mimetype() == mimeType.name()) + matcherIt.remove(); + } + // add new rules + for (auto it = rules.constBegin(); it != rules.constEnd(); ++it) { + MimeMagicRuleMatcher matcher(mimeType.name(), it.key()/*priority*/); + matcher.addRules(it.value()); + addMagicMatcher(matcher); + } +} + void MimeXMLProvider::ensureLoaded() { if (!m_loaded /*|| shouldCheck()*/) { |