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;
|
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.
|
||||||
|
|||||||
@@ -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;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -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()
|
||||||
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user