aboutsummaryrefslogtreecommitdiffstats
path: root/src/libs/utils/mimetypes/mimeprovider.cpp
diff options
context:
space:
mode:
authorEike Ziller <eike.ziller@theqtcompany.com>2015-02-05 14:37:16 +0100
committerEike Ziller <eike.ziller@theqtcompany.com>2015-02-17 15:19:13 +0000
commitafa2212f8dc2b20d5b0734993beba00c1c60e701 (patch)
tree8947a70ed7ba8f9174acd07cd44fc1897c3510bf /src/libs/utils/mimetypes/mimeprovider.cpp
parent337339004843bc968e90a45cf24b9272b8372ba1 (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.cpp26
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()*/) {