MimeDatabase: Add API for adding mime types from xml files

Change-Id: I43e5ef02322636b8212c860f419309323f23445b
Reviewed-by: David Schulz <david.schulz@theqtcompany.com>
This commit is contained in:
Eike Ziller
2015-01-28 15:41:42 +01:00
parent 27a3c0703f
commit f132649864
4 changed files with 28 additions and 0 deletions

View File

@@ -303,6 +303,14 @@ MimeDatabase::~MimeDatabase()
d = 0; d = 0;
} }
void MimeDatabase::addMimeTypes(const QString &fileName)
{
auto d = MimeDatabasePrivate::instance();
QMutexLocker locker(&d->mutex);
auto xmlProvider = static_cast<MimeXMLProvider *>(d->provider());
xmlProvider->addFile(fileName);
}
/*! /*!
\fn MimeType MimeDatabase::mimeTypeForName(const QString &nameOrAlias) const; \fn MimeType MimeDatabase::mimeTypeForName(const QString &nameOrAlias) const;
Returns a MIME type for \a nameOrAlias or an invalid one if none found. Returns a MIME type for \a nameOrAlias or an invalid one if none found.

View File

@@ -82,6 +82,9 @@ public:
QList<MimeType> allMimeTypes() const; QList<MimeType> allMimeTypes() const;
// Qt Creator additions
static void addMimeTypes(const QString &fileName);
private: private:
Internal::MimeDatabasePrivate *d; Internal::MimeDatabasePrivate *d;
}; };

View File

@@ -762,6 +762,8 @@ void MimeXMLProvider::ensureLoaded()
allFiles.prepend(QLatin1String(":/qt-project.org/qmime/freedesktop.org.xml")); allFiles.prepend(QLatin1String(":/qt-project.org/qmime/freedesktop.org.xml"));
} }
allFiles.append(m_additionalFiles);
if (m_allFiles == allFiles) if (m_allFiles == allFiles)
return; return;
m_allFiles = allFiles; m_allFiles = allFiles;
@@ -859,3 +861,12 @@ void MimeXMLProvider::addMagicMatcher(const MimeMagicRuleMatcher &matcher)
{ {
m_magicMatchers.append(matcher); m_magicMatchers.append(matcher);
} }
void MimeXMLProvider::addFile(const QString &filePath)
{
m_additionalFiles.append(filePath);
if (m_loaded) {
m_allFiles.append(filePath);
load(filePath);
} // else: will be loaded in ensureLoaded()
}

View File

@@ -148,6 +148,9 @@ public:
void addAlias(const QString &alias, const QString &name); void addAlias(const QString &alias, const QString &name);
void addMagicMatcher(const MimeMagicRuleMatcher &matcher); void addMagicMatcher(const MimeMagicRuleMatcher &matcher);
// Qt Creator additions
void addFile(const QString &filePath);
private: private:
void ensureLoaded(); void ensureLoaded();
void load(const QString &fileName); void load(const QString &fileName);
@@ -166,6 +169,9 @@ private:
QList<MimeMagicRuleMatcher> m_magicMatchers; QList<MimeMagicRuleMatcher> m_magicMatchers;
QStringList m_allFiles; QStringList m_allFiles;
// Qt Creator additions
QStringList m_additionalFiles;
}; };
} // Internal } // Internal