summaryrefslogtreecommitdiffstats
path: root/src/corelib/mimetypes/qmimedatabase_p.h
diff options
context:
space:
mode:
authorDavid Faure <david.faure@kdab.com>2017-10-08 18:31:26 +0200
committerDavid Faure <david.faure@kdab.com>2017-11-30 12:54:49 +0000
commit7a5644d6481a3c1a7416772998ca4e60c977bfbd (patch)
treed9667bb9597342cd0c9e832d60061e6e45790c3a /src/corelib/mimetypes/qmimedatabase_p.h
parent8835c0376befd009702b9a17c506639e31c842b9 (diff)
QMimeDatabase: redesign to use both binary and XML providers
Previously, we would use mime.cache in all mime directories if at least one of them had such a file (other than the most-local one), otherwise the "source" XML would be used in all directories. Now it's possible to use mime.cache in those directories which have one, and XML in those directories that don't. Not only is this more correct, it will allow in a subsequent commit to bundle the binary cache in QtCore's qrc rather than the very big XML file. The design change to allow this is that now every provider only deals with a single directory, and QMimeDatabasePrivate takes care of creating multiple providers, one for each dir. This required to move most of the loops from the binary provider up to QMimeDatabasePrivate itself. Change-Id: Iac82d5f5836b80d45076e586b903d16fa2525b34 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/corelib/mimetypes/qmimedatabase_p.h')
-rw-r--r--src/corelib/mimetypes/qmimedatabase_p.h13
1 files changed, 8 insertions, 5 deletions
diff --git a/src/corelib/mimetypes/qmimedatabase_p.h b/src/corelib/mimetypes/qmimedatabase_p.h
index 93bdd24b6f..1c38f46115 100644
--- a/src/corelib/mimetypes/qmimedatabase_p.h
+++ b/src/corelib/mimetypes/qmimedatabase_p.h
@@ -59,8 +59,9 @@
#include "qmimetype_p.h"
#include "qmimeglobpattern_p.h"
-#include <QtCore/qmutex.h>
#include <QtCore/qelapsedtimer.h>
+#include <QtCore/qmutex.h>
+#include <QtCore/qvector.h>
QT_BEGIN_NAMESPACE
@@ -84,7 +85,8 @@ public:
QList<QMimeType> allMimeTypes();
-
+ QString resolveAlias(const QString &nameOrAlias);
+ QStringList parents(const QString &mimeName);
QMimeType mimeTypeForName(const QString &nameOrAlias);
QMimeType mimeTypeForFileNameAndData(const QString &fileName, QIODevice *device, int *priorityPtr);
QMimeType findByData(const QByteArray &data, int *priorityPtr);
@@ -95,15 +97,16 @@ public:
void loadMimeTypePrivate(QMimeTypePrivate &mimePrivate);
void loadGenericIcon(QMimeTypePrivate &mimePrivate);
void loadIcon(QMimeTypePrivate &mimePrivate);
- QStringList parents(const QString &mimeName);
+ QStringList mimeParents(const QString &mimeName);
QStringList listAliases(const QString &mimeName);
bool mimeInherits(const QString &mime, const QString &parent);
private:
- QMimeProviderBase *provider();
+ QVector<QMimeProviderBase *> providers();
bool shouldCheck();
+ void loadProviders();
- mutable QMimeProviderBase *m_provider;
+ mutable QVector<QMimeProviderBase *> m_providers;
QElapsedTimer m_lastCheck;
public: