diff options
Diffstat (limited to 'src/corelib/mimetypes/qmimeprovider_p.h')
-rw-r--r-- | src/corelib/mimetypes/qmimeprovider_p.h | 80 |
1 files changed, 36 insertions, 44 deletions
diff --git a/src/corelib/mimetypes/qmimeprovider_p.h b/src/corelib/mimetypes/qmimeprovider_p.h index 0be01d2fd0..b2be545cf8 100644 --- a/src/corelib/mimetypes/qmimeprovider_p.h +++ b/src/corelib/mimetypes/qmimeprovider_p.h @@ -59,7 +59,6 @@ #include "qmimeglobpattern_p.h" #include <QtCore/qdatetime.h> #include <QtCore/qset.h> -#include <QtCore/qelapsedtimer.h> QT_BEGIN_NAMESPACE @@ -68,25 +67,25 @@ class QMimeMagicRuleMatcher; class QMimeProviderBase { public: - QMimeProviderBase(QMimeDatabasePrivate *db); + QMimeProviderBase(QMimeDatabasePrivate *db, const QString &directory); virtual ~QMimeProviderBase() {} virtual bool isValid() = 0; virtual QMimeType mimeTypeForName(const QString &name) = 0; - virtual QMimeGlobMatchResult findByFileName(const QString &fileName) = 0; - virtual QStringList parents(const QString &mime) = 0; + virtual void addFileNameMatches(const QString &fileName, QMimeGlobMatchResult &result) = 0; + virtual void addParents(const QString &mime, QStringList &result) = 0; virtual QString resolveAlias(const QString &name) = 0; - virtual QStringList listAliases(const QString &name) = 0; - virtual QMimeType findByMagic(const QByteArray &data, int *accuracyPtr) = 0; - virtual QList<QMimeType> allMimeTypes() = 0; - virtual void loadMimeTypePrivate(QMimeTypePrivate &) {} + virtual void addAliases(const QString &name, QStringList &result) = 0; + virtual void findByMagic(const QByteArray &data, int *accuracyPtr, QMimeType &candidate) = 0; + virtual void addAllMimeTypes(QList<QMimeType> &result) = 0; virtual void loadIcon(QMimeTypePrivate &) {} virtual void loadGenericIcon(QMimeTypePrivate &) {} + virtual void ensureLoaded() {} + + QString directory() const { return m_directory; } QMimeDatabasePrivate *m_db; -protected: - bool shouldCheck(); - QElapsedTimer m_lastCheck; + QString m_directory; }; /* @@ -95,20 +94,21 @@ protected: class QMimeBinaryProvider : public QMimeProviderBase { public: - QMimeBinaryProvider(QMimeDatabasePrivate *db); + QMimeBinaryProvider(QMimeDatabasePrivate *db, const QString &directory); virtual ~QMimeBinaryProvider(); - virtual bool isValid() Q_DECL_OVERRIDE; - virtual QMimeType mimeTypeForName(const QString &name) Q_DECL_OVERRIDE; - virtual QMimeGlobMatchResult findByFileName(const QString &fileName) Q_DECL_OVERRIDE; - virtual QStringList parents(const QString &mime) Q_DECL_OVERRIDE; - virtual QString resolveAlias(const QString &name) Q_DECL_OVERRIDE; - virtual QStringList listAliases(const QString &name) Q_DECL_OVERRIDE; - virtual QMimeType findByMagic(const QByteArray &data, int *accuracyPtr) Q_DECL_OVERRIDE; - virtual QList<QMimeType> allMimeTypes() Q_DECL_OVERRIDE; - virtual void loadMimeTypePrivate(QMimeTypePrivate &) Q_DECL_OVERRIDE; - virtual void loadIcon(QMimeTypePrivate &) Q_DECL_OVERRIDE; - virtual void loadGenericIcon(QMimeTypePrivate &) Q_DECL_OVERRIDE; + virtual bool isValid() override; + virtual QMimeType mimeTypeForName(const QString &name) override; + void addFileNameMatches(const QString &fileName, QMimeGlobMatchResult &result) override; + void addParents(const QString &mime, QStringList &result) override; + virtual QString resolveAlias(const QString &name) override; + void addAliases(const QString &name, QStringList &result) override; + void findByMagic(const QByteArray &data, int *accuracyPtr, QMimeType &candidate) override; + void addAllMimeTypes(QList<QMimeType> &result) override; + static void loadMimeTypePrivate(QMimeTypePrivate &); + virtual void loadIcon(QMimeTypePrivate &) override; + virtual void loadGenericIcon(QMimeTypePrivate &) override; + void ensureLoaded() override; private: struct CacheFile; @@ -118,15 +118,9 @@ private: bool matchMagicRule(CacheFile *cacheFile, int numMatchlets, int firstOffset, const QByteArray &data); QLatin1String iconForMime(CacheFile *cacheFile, int posListOffset, const QByteArray &inputMime); void loadMimeTypeList(); - void checkCache(); - - class CacheFileList : public QList<CacheFile *> - { - public: - CacheFile *findCacheFile(const QString &fileName) const; - bool checkCacheChanged(); - }; - CacheFileList m_cacheFiles; + bool checkCacheChanged(); + + CacheFile *m_cacheFile = nullptr; QStringList m_cacheFileNames; QSet<QString> m_mimetypeNames; bool m_mimetypeListLoaded; @@ -138,17 +132,18 @@ private: class QMimeXMLProvider : public QMimeProviderBase { public: - QMimeXMLProvider(QMimeDatabasePrivate *db); + QMimeXMLProvider(QMimeDatabasePrivate *db, const QString &directory); ~QMimeXMLProvider(); - virtual bool isValid() Q_DECL_OVERRIDE; - virtual QMimeType mimeTypeForName(const QString &name) Q_DECL_OVERRIDE; - virtual QMimeGlobMatchResult findByFileName(const QString &fileName) Q_DECL_OVERRIDE; - virtual QStringList parents(const QString &mime) Q_DECL_OVERRIDE; - virtual QString resolveAlias(const QString &name) Q_DECL_OVERRIDE; - virtual QStringList listAliases(const QString &name) Q_DECL_OVERRIDE; - virtual QMimeType findByMagic(const QByteArray &data, int *accuracyPtr) Q_DECL_OVERRIDE; - virtual QList<QMimeType> allMimeTypes() Q_DECL_OVERRIDE; + virtual bool isValid() override; + virtual QMimeType mimeTypeForName(const QString &name) override; + void addFileNameMatches(const QString &fileName, QMimeGlobMatchResult &result) override; + void addParents(const QString &mime, QStringList &result) override; + virtual QString resolveAlias(const QString &name) override; + void addAliases(const QString &name, QStringList &result) override; + void findByMagic(const QByteArray &data, int *accuracyPtr, QMimeType &candidate) override; + void addAllMimeTypes(QList<QMimeType> &result) override; + void ensureLoaded() override; bool load(const QString &fileName, QString *errorMessage); @@ -160,11 +155,8 @@ public: void addMagicMatcher(const QMimeMagicRuleMatcher &matcher); private: - void ensureLoaded(); void load(const QString &fileName); - bool m_loaded; - typedef QHash<QString, QMimeType> NameMimeTypeMap; NameMimeTypeMap m_nameMimeTypeMap; |