forked from qt-creator/qt-creator
MimeDatabase: Provide access to mime magic rules
Change-Id: I9d03db685200e86f71e15fe596b67db1d386eb19 Reviewed-by: David Schulz <david.schulz@theqtcompany.com>
This commit is contained in:
@@ -37,6 +37,7 @@
|
||||
|
||||
#include "mimedatabase_p.h"
|
||||
|
||||
#include "mimemagicrule_p.h"
|
||||
#include "mimeprovider_p.h"
|
||||
#include "mimetype_p.h"
|
||||
|
||||
@@ -710,3 +711,10 @@ QList<MimeType> MimeDatabase::allMimeTypes() const
|
||||
|
||||
\value MatchContent The file content is used to look for a match
|
||||
*/
|
||||
|
||||
QMap<int, QList<MimeMagicRule> > MimeDatabase::magicRulesForMimeType(const MimeType &mimeType)
|
||||
{
|
||||
auto d = MimeDatabasePrivate::instance();
|
||||
QMutexLocker locker(&d->mutex);
|
||||
return d->provider()->magicRulesForMimeType(mimeType);
|
||||
}
|
||||
|
@@ -35,6 +35,7 @@
|
||||
#define XMIMEDATABASE_H
|
||||
|
||||
#include "mimetype.h"
|
||||
#include "mimemagicrule_p.h"
|
||||
|
||||
#include <utils/utils_global.h>
|
||||
|
||||
@@ -87,6 +88,7 @@ public:
|
||||
static QString allFiltersString(QString *allFilesFilter = 0);
|
||||
static QStringList allGlobPatterns();
|
||||
static MimeType bestMatch(const QString &fileName, const QList<MimeType> &types);
|
||||
static QMap<int, QList<Internal::MimeMagicRule> > magicRulesForMimeType(const MimeType &mimeType); // priority -> rules
|
||||
|
||||
private:
|
||||
Internal::MimeDatabasePrivate *d;
|
||||
|
@@ -45,16 +45,22 @@
|
||||
// We mean it.
|
||||
//
|
||||
|
||||
#include <utils/utils_global.h>
|
||||
|
||||
#include <QtCore/qbytearray.h>
|
||||
#include <QtCore/qscopedpointer.h>
|
||||
#include <QtCore/qlist.h>
|
||||
#include <QtCore/qmap.h>
|
||||
|
||||
namespace Utils {
|
||||
|
||||
class MimeType;
|
||||
|
||||
namespace Internal {
|
||||
|
||||
class MimeMagicRulePrivate;
|
||||
|
||||
class MimeMagicRule
|
||||
class QTCREATOR_UTILS_EXPORT MimeMagicRule
|
||||
{
|
||||
public:
|
||||
enum Type { Invalid = 0, String, Host16, Host32, Big16, Big32, Little16, Little32, Byte };
|
||||
|
@@ -793,6 +793,16 @@ MimeType MimeXMLProvider::bestMatchByMagic(const QByteArray &data, const QList<M
|
||||
return mimeTypeForName(candidate);
|
||||
}
|
||||
|
||||
QMap<int, QList<MimeMagicRule> > MimeXMLProvider::magicRulesForMimeType(const MimeType &mimeType)
|
||||
{
|
||||
QMap<int, QList<MimeMagicRule> > result;
|
||||
foreach (const MimeMagicRuleMatcher &matcher, m_magicMatchers) {
|
||||
if (mimeType.matchesName(matcher.mimetype()))
|
||||
result[matcher.priority()].append(matcher.magicRules());
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
void MimeXMLProvider::ensureLoaded()
|
||||
{
|
||||
if (!m_loaded /*|| shouldCheck()*/) {
|
||||
|
@@ -46,6 +46,7 @@
|
||||
//
|
||||
|
||||
#include "mimedatabase_p.h"
|
||||
#include "mimemagicrule_p.h"
|
||||
|
||||
#include <QtCore/qdatetime.h>
|
||||
#include <QtCore/qset.h>
|
||||
@@ -76,6 +77,7 @@ public:
|
||||
// Qt Creator additions
|
||||
virtual QStringList bestMatchByFileName(const QString &fileName, const QList<MimeType> &types) = 0;
|
||||
virtual MimeType bestMatchByMagic(const QByteArray &data, const QList<MimeType> &types, int *accuracyPtr) = 0;
|
||||
virtual QMap<int, QList<MimeMagicRule> > magicRulesForMimeType(const MimeType &mimeType) = 0;
|
||||
|
||||
MimeDatabasePrivate *m_db;
|
||||
protected:
|
||||
@@ -156,6 +158,7 @@ public:
|
||||
void addFile(const QString &filePath);
|
||||
QStringList bestMatchByFileName(const QString &fileName, const QList<MimeType> &types);
|
||||
MimeType bestMatchByMagic(const QByteArray &data, const QList<MimeType> &types, int *accuracyPtr);
|
||||
QMap<int, QList<MimeMagicRule> > magicRulesForMimeType(const MimeType &mimeType);
|
||||
|
||||
private:
|
||||
void ensureLoaded();
|
||||
|
Reference in New Issue
Block a user