forked from qt-creator/qt-creator
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:
@@ -303,6 +303,14 @@ MimeDatabase::~MimeDatabase()
|
||||
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;
|
||||
Returns a MIME type for \a nameOrAlias or an invalid one if none found.
|
||||
|
||||
@@ -82,6 +82,9 @@ public:
|
||||
|
||||
QList<MimeType> allMimeTypes() const;
|
||||
|
||||
// Qt Creator additions
|
||||
static void addMimeTypes(const QString &fileName);
|
||||
|
||||
private:
|
||||
Internal::MimeDatabasePrivate *d;
|
||||
};
|
||||
|
||||
@@ -762,6 +762,8 @@ void MimeXMLProvider::ensureLoaded()
|
||||
allFiles.prepend(QLatin1String(":/qt-project.org/qmime/freedesktop.org.xml"));
|
||||
}
|
||||
|
||||
allFiles.append(m_additionalFiles);
|
||||
|
||||
if (m_allFiles == allFiles)
|
||||
return;
|
||||
m_allFiles = allFiles;
|
||||
@@ -859,3 +861,12 @@ void MimeXMLProvider::addMagicMatcher(const MimeMagicRuleMatcher &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()
|
||||
}
|
||||
|
||||
@@ -148,6 +148,9 @@ public:
|
||||
void addAlias(const QString &alias, const QString &name);
|
||||
void addMagicMatcher(const MimeMagicRuleMatcher &matcher);
|
||||
|
||||
// Qt Creator additions
|
||||
void addFile(const QString &filePath);
|
||||
|
||||
private:
|
||||
void ensureLoaded();
|
||||
void load(const QString &fileName);
|
||||
@@ -166,6 +169,9 @@ private:
|
||||
|
||||
QList<MimeMagicRuleMatcher> m_magicMatchers;
|
||||
QStringList m_allFiles;
|
||||
|
||||
// Qt Creator additions
|
||||
QStringList m_additionalFiles;
|
||||
};
|
||||
|
||||
} // Internal
|
||||
|
||||
Reference in New Issue
Block a user