diff --git a/src/libs/utils/mimetypes/mimedatabase.cpp b/src/libs/utils/mimetypes/mimedatabase.cpp index f10fe8a1be1..5db9eb89cdc 100644 --- a/src/libs/utils/mimetypes/mimedatabase.cpp +++ b/src/libs/utils/mimetypes/mimedatabase.cpp @@ -40,6 +40,7 @@ #include "mimeprovider_p.h" #include "mimetype_p.h" +#include #include #include #include @@ -51,6 +52,8 @@ #include #include +static const char ALL_FILES_FILTER[] = QT_TRANSLATE_NOOP("Core", "All Files (*)"); + using namespace Utils; using namespace Utils::Internal; @@ -311,6 +314,36 @@ void MimeDatabase::addMimeTypes(const QString &fileName) xmlProvider->addFile(fileName); } +QString MimeDatabase::allFiltersString(QString *allFilesFilter) +{ + MimeDatabase mdb; + QSet uniqueFilters; + foreach (const MimeType &mt, mdb.allMimeTypes()) + uniqueFilters.insert(mt.filterString()); + QStringList filters; + foreach (const QString &filter, uniqueFilters) + filters.append(filter); + filters.sort(); + static const QString allFiles = + QCoreApplication::translate("Core", ALL_FILES_FILTER); + if (allFilesFilter) + *allFilesFilter = allFiles; + + // Prepend all files filter + filters.prepend(allFiles); + + return filters.join(QLatin1String(";;")); +} + +QStringList MimeDatabase::allGlobPatterns() +{ + MimeDatabase mdb; + QStringList patterns; + foreach (const MimeType &mt, mdb.allMimeTypes()) + patterns.append(mt.globPatterns()); + return patterns; +} + /*! \fn MimeType MimeDatabase::mimeTypeForName(const QString &nameOrAlias) const; Returns a MIME type for \a nameOrAlias or an invalid one if none found. diff --git a/src/libs/utils/mimetypes/mimedatabase.h b/src/libs/utils/mimetypes/mimedatabase.h index 71d43041e18..e760cb69fd8 100644 --- a/src/libs/utils/mimetypes/mimedatabase.h +++ b/src/libs/utils/mimetypes/mimedatabase.h @@ -84,6 +84,8 @@ public: // Qt Creator additions static void addMimeTypes(const QString &fileName); + static QString allFiltersString(QString *allFilesFilter = 0); + static QStringList allGlobPatterns(); private: Internal::MimeDatabasePrivate *d;