diff options
author | Sérgio Martins <sergio.martins@kdab.com> | 2015-02-15 16:39:13 +0000 |
---|---|---|
committer | Sérgio Martins <sergio.martins@kdab.com> | 2015-02-17 00:06:47 +0000 |
commit | fbeeaf23fe1755bc28185781d8182ddcb4e7985a (patch) | |
tree | f6bcacd7251bfcf6bde3587e86ba3502f9a2033e | |
parent | 3c1d9911c4c327ebc8180efb31fa8e83b1f932fd (diff) |
Introduce QT_NO_MIMETYPE
The mime type stuff generates one of the biggest translation units in QtCore
due to the compressed 1.7MB freedesktop.org.xml resource.
With QT_NO_MIMETYPE, libQt5Core.so is almost 400Kb smaller
(4.8MB->4.4MB gcc 4.9 stripped release build)
Change-Id: I5339090994034355724ff4deddb64720e81baeaf
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: David Faure <david.faure@kdab.com>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
28 files changed, 116 insertions, 14 deletions
diff --git a/src/corelib/global/qconfig-minimal.h b/src/corelib/global/qconfig-minimal.h index de6f2401b8..f307e98dd7 100644 --- a/src/corelib/global/qconfig-minimal.h +++ b/src/corelib/global/qconfig-minimal.h @@ -297,6 +297,9 @@ #ifndef QT_NO_DESKTOPSERVICES # define QT_NO_DESKTOPSERVICES #endif +#ifndef QT_NO_MIMETYPE +# define QT_NO_MIMETYPE +#endif #ifndef QT_NO_SYSTEMTRAYICON # define QT_NO_SYSTEMTRAYICON #endif diff --git a/src/corelib/global/qconfig-small.h b/src/corelib/global/qconfig-small.h index 48c08e4f36..43ae101515 100644 --- a/src/corelib/global/qconfig-small.h +++ b/src/corelib/global/qconfig-small.h @@ -187,6 +187,9 @@ #ifndef QT_NO_DESKTOPSERVICES # define QT_NO_DESKTOPSERVICES #endif +#ifndef QT_NO_MIMETYPE +# define QT_NO_MIMETYPE +#endif #ifndef QT_NO_SYSTEMTRAYICON # define QT_NO_SYSTEMTRAYICON #endif diff --git a/src/corelib/global/qfeatures.txt b/src/corelib/global/qfeatures.txt index fb6e56ec7d..dec16eaef1 100644 --- a/src/corelib/global/qfeatures.txt +++ b/src/corelib/global/qfeatures.txt @@ -879,6 +879,12 @@ Section: Utilities Requires: Name: QDesktopServices +Feature: MIMETYPE +Description: Describes types of file or data, represented by a MIME type string. +Section: Utilities +Requires: +Name: QMimeType + Feature: SYSTEMTRAYICON Description: Provides an icon for an application in the system tray. Section: Utilities diff --git a/src/corelib/mimetypes/mimetypes.pri b/src/corelib/mimetypes/mimetypes.pri index 238aa837e2..1ab773fc10 100644 --- a/src/corelib/mimetypes/mimetypes.pri +++ b/src/corelib/mimetypes/mimetypes.pri @@ -20,6 +20,6 @@ SOURCES += \ mimetypes/qmimeglobpattern.cpp \ mimetypes/qmimeprovider.cpp -RESOURCES += \ - mimetypes/mimetypes.qrc - +!contains(DEFINES, QT_NO_MIMETYPE) { + RESOURCES += mimetypes/mimetypes.qrc +} diff --git a/src/corelib/mimetypes/qmimedatabase.cpp b/src/corelib/mimetypes/qmimedatabase.cpp index 89560e4adf..b919e1c48a 100644 --- a/src/corelib/mimetypes/qmimedatabase.cpp +++ b/src/corelib/mimetypes/qmimedatabase.cpp @@ -33,8 +33,9 @@ #include <qplatformdefs.h> // always first -#include "qmimedatabase.h" +#ifndef QT_NO_MIMETYPE +#include "qmimedatabase.h" #include "qmimedatabase_p.h" #include "qmimeprovider_p.h" @@ -597,3 +598,5 @@ QList<QMimeType> QMimeDatabase::allMimeTypes() const */ QT_END_NAMESPACE + +#endif // QT_NO_MIMETYPE diff --git a/src/corelib/mimetypes/qmimedatabase.h b/src/corelib/mimetypes/qmimedatabase.h index 4fb9308a15..912d9b8443 100644 --- a/src/corelib/mimetypes/qmimedatabase.h +++ b/src/corelib/mimetypes/qmimedatabase.h @@ -35,6 +35,9 @@ #define QMIMEDATABASE_H #include <QtCore/qmimetype.h> + +#ifndef QT_NO_MIMETYPE + #include <QtCore/qstringlist.h> QT_BEGIN_NAMESPACE @@ -81,4 +84,6 @@ private: }; QT_END_NAMESPACE -#endif // QMIMEDATABASE_H + +#endif // QT_NO_MIMETYPE +#endif // QMIMEDATABASE_H diff --git a/src/corelib/mimetypes/qmimedatabase_p.h b/src/corelib/mimetypes/qmimedatabase_p.h index dd54c3a185..e3cfe3443f 100644 --- a/src/corelib/mimetypes/qmimedatabase_p.h +++ b/src/corelib/mimetypes/qmimedatabase_p.h @@ -45,13 +45,16 @@ // We mean it. // -#include <QtCore/qhash.h> -#include <QtCore/qmutex.h> - #include "qmimetype.h" + +#ifndef QT_NO_MIMETYPE + #include "qmimetype_p.h" #include "qmimeglobpattern_p.h" +#include <QtCore/qhash.h> +#include <QtCore/qmutex.h> + QT_BEGIN_NAMESPACE class QIODevice; @@ -90,4 +93,5 @@ public: QT_END_NAMESPACE -#endif // QMIMEDATABASE_P_H +#endif // QT_NO_MIMETYPE +#endif // QMIMEDATABASE_P_H diff --git a/src/corelib/mimetypes/qmimeglobpattern.cpp b/src/corelib/mimetypes/qmimeglobpattern.cpp index d852a9f249..57d834ac78 100644 --- a/src/corelib/mimetypes/qmimeglobpattern.cpp +++ b/src/corelib/mimetypes/qmimeglobpattern.cpp @@ -33,6 +33,8 @@ #include "qmimeglobpattern_p.h" +#ifndef QT_NO_MIMETYPE + #include <QRegExp> #include <QStringList> #include <QDebug> @@ -234,3 +236,5 @@ void QMimeAllGlobPatterns::clear() } QT_END_NAMESPACE + +#endif // QT_NO_MIMETYPE diff --git a/src/corelib/mimetypes/qmimeglobpattern_p.h b/src/corelib/mimetypes/qmimeglobpattern_p.h index f2524a0d36..9ee3eb61cf 100644 --- a/src/corelib/mimetypes/qmimeglobpattern_p.h +++ b/src/corelib/mimetypes/qmimeglobpattern_p.h @@ -45,6 +45,10 @@ // We mean it. // +#include <QtCore/qglobal.h> + +#ifndef QT_NO_MIMETYPE + #include <QtCore/qstringlist.h> #include <QtCore/qhash.h> @@ -146,4 +150,5 @@ public: QT_END_NAMESPACE +#endif // QT_NO_MIMETYPE #endif // QMIMEGLOBPATTERN_P_H diff --git a/src/corelib/mimetypes/qmimemagicrule.cpp b/src/corelib/mimetypes/qmimemagicrule.cpp index d9240a9fce..9693558a4c 100644 --- a/src/corelib/mimetypes/qmimemagicrule.cpp +++ b/src/corelib/mimetypes/qmimemagicrule.cpp @@ -36,6 +36,8 @@ #include "qmimemagicrule_p.h" +#ifndef QT_NO_MIMETYPE + #include <QtCore/QList> #include <QtCore/QDebug> #include <qendian.h> @@ -377,3 +379,5 @@ bool QMimeMagicRule::matches(const QByteArray &data) const } QT_END_NAMESPACE + +#endif // QT_NO_MIMETYPE diff --git a/src/corelib/mimetypes/qmimemagicrule_p.h b/src/corelib/mimetypes/qmimemagicrule_p.h index 3b2c9c1a12..03ac1d1de9 100644 --- a/src/corelib/mimetypes/qmimemagicrule_p.h +++ b/src/corelib/mimetypes/qmimemagicrule_p.h @@ -45,6 +45,10 @@ // We mean it. // +#include <QtCore/qglobal.h> + +#ifndef QT_NO_MIMETYPE + #include <QtCore/qbytearray.h> #include <QtCore/qscopedpointer.h> #include <QtCore/qlist.h> @@ -89,4 +93,5 @@ Q_DECLARE_TYPEINFO(QMimeMagicRule, Q_MOVABLE_TYPE); QT_END_NAMESPACE +#endif // QT_NO_MIMETYPE #endif // QMIMEMAGICRULE_H diff --git a/src/corelib/mimetypes/qmimemagicrulematcher.cpp b/src/corelib/mimetypes/qmimemagicrulematcher.cpp index fc92a4cdcd..629e8d9d2f 100644 --- a/src/corelib/mimetypes/qmimemagicrulematcher.cpp +++ b/src/corelib/mimetypes/qmimemagicrulematcher.cpp @@ -35,6 +35,8 @@ #include "qmimemagicrulematcher_p.h" +#ifndef QT_NO_MIMETYPE + #include "qmimetype_p.h" QT_BEGIN_NAMESPACE @@ -98,3 +100,4 @@ unsigned QMimeMagicRuleMatcher::priority() const } QT_END_NAMESPACE +#endif // QT_NO_MIMETYPE diff --git a/src/corelib/mimetypes/qmimemagicrulematcher_p.h b/src/corelib/mimetypes/qmimemagicrulematcher_p.h index f600e9801a..1ea6227378 100644 --- a/src/corelib/mimetypes/qmimemagicrulematcher_p.h +++ b/src/corelib/mimetypes/qmimemagicrulematcher_p.h @@ -45,12 +45,14 @@ // We mean it. // +#include "qmimemagicrule_p.h" + +#ifndef QT_NO_MIMETYPE + #include <QtCore/qbytearray.h> #include <QtCore/qlist.h> #include <QtCore/qstring.h> -#include "qmimemagicrule_p.h" - QT_BEGIN_NAMESPACE class QMimeMagicRuleMatcher @@ -78,4 +80,5 @@ private: QT_END_NAMESPACE +#endif // QT_NO_MIMETYPE #endif // QMIMEMAGICRULEMATCHER_P_H diff --git a/src/corelib/mimetypes/qmimeprovider.cpp b/src/corelib/mimetypes/qmimeprovider.cpp index a65782de6b..7342a5cd77 100644 --- a/src/corelib/mimetypes/qmimeprovider.cpp +++ b/src/corelib/mimetypes/qmimeprovider.cpp @@ -33,6 +33,8 @@ #include "qmimeprovider_p.h" +#ifndef QT_NO_MIMETYPE + #include "qmimetypeparser_p.h" #include <qstandardpaths.h> #include "qmimemagicrulematcher_p.h" @@ -866,3 +868,5 @@ void QMimeXMLProvider::addMagicMatcher(const QMimeMagicRuleMatcher &matcher) } QT_END_NAMESPACE + +#endif // QT_NO_MIMETYPE diff --git a/src/corelib/mimetypes/qmimeprovider_p.h b/src/corelib/mimetypes/qmimeprovider_p.h index b438c4f076..5a89ac23c3 100644 --- a/src/corelib/mimetypes/qmimeprovider_p.h +++ b/src/corelib/mimetypes/qmimeprovider_p.h @@ -45,8 +45,11 @@ // We mean it. // -#include <QtCore/qdatetime.h> #include "qmimedatabase_p.h" + +#ifndef QT_NO_MIMETYPE + +#include <QtCore/qdatetime.h> #include <QtCore/qset.h> QT_BEGIN_NAMESPACE @@ -168,4 +171,5 @@ private: QT_END_NAMESPACE +#endif // QT_NO_MIMETYPE #endif // QMIMEPROVIDER_P_H diff --git a/src/corelib/mimetypes/qmimetype.cpp b/src/corelib/mimetypes/qmimetype.cpp index e000359980..70df9868b6 100644 --- a/src/corelib/mimetypes/qmimetype.cpp +++ b/src/corelib/mimetypes/qmimetype.cpp @@ -33,6 +33,8 @@ #include "qmimetype.h" +#ifndef QT_NO_MIMETYPE + #include "qmimetype_p.h" #include "qmimedatabase_p.h" #include "qmimeprovider_p.h" @@ -449,3 +451,5 @@ QDebug operator<<(QDebug debug, const QMimeType &mime) #endif QT_END_NAMESPACE + +#endif // QT_NO_MIMETYPE diff --git a/src/corelib/mimetypes/qmimetype.h b/src/corelib/mimetypes/qmimetype.h index d6d12a7ec4..4ba3c53470 100644 --- a/src/corelib/mimetypes/qmimetype.h +++ b/src/corelib/mimetypes/qmimetype.h @@ -34,6 +34,10 @@ #ifndef QMIMETYPE_H #define QMIMETYPE_H +#include <QtCore/qglobal.h> + +#ifndef QT_NO_MIMETYPE + #include <QtCore/qshareddata.h> #include <QtCore/qstring.h> @@ -108,4 +112,6 @@ Q_CORE_EXPORT QDebug operator<<(QDebug debug, const QMimeType &mime); #endif QT_END_NAMESPACE -#endif // QMIMETYPE_H + +#endif // QT_NO_MIMETYPE +#endif // QMIMETYPE_H diff --git a/src/corelib/mimetypes/qmimetype_p.h b/src/corelib/mimetypes/qmimetype_p.h index bfaf32422e..bf533bbcb0 100644 --- a/src/corelib/mimetypes/qmimetype_p.h +++ b/src/corelib/mimetypes/qmimetype_p.h @@ -47,6 +47,8 @@ #include "qmimetype.h" +#ifndef QT_NO_MIMETYPE + #include <QtCore/qhash.h> #include <QtCore/qstringlist.h> @@ -112,4 +114,5 @@ QT_END_NAMESPACE QT_END_NAMESPACE #endif +#endif // QT_NO_MIMETYPE #endif // QMIMETYPE_P_H diff --git a/src/corelib/mimetypes/qmimetypeparser.cpp b/src/corelib/mimetypes/qmimetypeparser.cpp index 1af426d7e7..9610162c4f 100644 --- a/src/corelib/mimetypes/qmimetypeparser.cpp +++ b/src/corelib/mimetypes/qmimetypeparser.cpp @@ -35,6 +35,8 @@ #include "qmimetypeparser_p.h" +#ifndef QT_NO_MIMETYPE + #include "qmimetype_p.h" #include "qmimemagicrulematcher_p.h" @@ -341,3 +343,5 @@ bool QMimeTypeParserBase::parse(QIODevice *dev, const QString &fileName, QString } QT_END_NAMESPACE + +#endif // QT_NO_MIMETYPE diff --git a/src/corelib/mimetypes/qmimetypeparser_p.h b/src/corelib/mimetypes/qmimetypeparser_p.h index 292a5ab38e..2be4380cee 100644 --- a/src/corelib/mimetypes/qmimetypeparser_p.h +++ b/src/corelib/mimetypes/qmimetypeparser_p.h @@ -47,6 +47,9 @@ // #include "qmimedatabase_p.h" + +#ifndef QT_NO_MIMETYPE + #include "qmimeprovider_p.h" QT_BEGIN_NAMESPACE @@ -118,4 +121,5 @@ private: QT_END_NAMESPACE +#endif // QT_NO_MIMETYPE #endif // MIMETYPEPARSER_P_H diff --git a/src/plugins/printsupport/cups/qppdprintdevice.cpp b/src/plugins/printsupport/cups/qppdprintdevice.cpp index bb2edb33b5..c2bd2872a9 100644 --- a/src/plugins/printsupport/cups/qppdprintdevice.cpp +++ b/src/plugins/printsupport/cups/qppdprintdevice.cpp @@ -438,6 +438,7 @@ QPrint::ColorMode QPpdPrintDevice::defaultColorMode() const return QPrint::GrayScale; } +#ifndef QT_NO_MIMETYPE void QPpdPrintDevice::loadMimeTypes() const { // TODO No CUPS api? Need to manually load CUPS mime.types file? @@ -453,6 +454,7 @@ void QPpdPrintDevice::loadMimeTypes() const m_mimeTypes.append(db.mimeTypeForName(QStringLiteral("text/plain"))); m_haveMimeTypes = true; } +#endif void QPpdPrintDevice::loadPrinter() { diff --git a/src/plugins/printsupport/cups/qppdprintdevice.h b/src/plugins/printsupport/cups/qppdprintdevice.h index d72ab469da..0d618192fe 100644 --- a/src/plugins/printsupport/cups/qppdprintdevice.h +++ b/src/plugins/printsupport/cups/qppdprintdevice.h @@ -95,7 +95,9 @@ protected: void loadOutputBins() const Q_DECL_OVERRIDE; void loadDuplexModes() const Q_DECL_OVERRIDE; void loadColorModes() const Q_DECL_OVERRIDE; +#ifndef QT_NO_MIMETYPE void loadMimeTypes() const Q_DECL_OVERRIDE; +#endif private: void loadPrinter(); diff --git a/src/printsupport/kernel/qplatformprintdevice.cpp b/src/printsupport/kernel/qplatformprintdevice.cpp index b18d4a1cc6..bd6d81774c 100644 --- a/src/printsupport/kernel/qplatformprintdevice.cpp +++ b/src/printsupport/kernel/qplatformprintdevice.cpp @@ -359,6 +359,7 @@ QList<QPrint::ColorMode> QPlatformPrintDevice::supportedColorModes() const return m_colorModes.toList(); } +#ifndef QT_NO_MIMETYPE void QPlatformPrintDevice::loadMimeTypes() const { } @@ -369,6 +370,7 @@ QList<QMimeType> QPlatformPrintDevice::supportedMimeTypes() const loadMimeTypes(); return m_mimeTypes.toList(); } +#endif // QT_NO_MIMETYPE QPageSize QPlatformPrintDevice::createPageSize(const QString &key, const QSize &size, const QString &localizedName) { diff --git a/src/printsupport/kernel/qplatformprintdevice.h b/src/printsupport/kernel/qplatformprintdevice.h index 684c37c35d..cb8c47f99e 100644 --- a/src/printsupport/kernel/qplatformprintdevice.h +++ b/src/printsupport/kernel/qplatformprintdevice.h @@ -114,7 +114,9 @@ public: virtual QPrint::ColorMode defaultColorMode() const; virtual QList<QPrint::ColorMode> supportedColorModes() const; +#ifndef QT_NO_MIMETYPE virtual QList<QMimeType> supportedMimeTypes() const; +#endif static QPageSize createPageSize(const QString &key, const QSize &size, const QString &localizedName); static QPageSize createPageSize(int windowsId, const QSize &size, const QString &localizedName); @@ -126,7 +128,9 @@ protected: virtual void loadOutputBins() const; virtual void loadDuplexModes() const; virtual void loadColorModes() const; +#ifndef QT_NO_MIMETYPE virtual void loadMimeTypes() const; +#endif QPageSize supportedPageSizeMatch(const QPageSize &pageSize) const; @@ -163,8 +167,10 @@ protected: mutable bool m_haveColorModes; mutable QVector<QPrint::ColorMode> m_colorModes; +#ifndef QT_NO_MIMETYPE mutable bool m_haveMimeTypes; mutable QVector<QMimeType> m_mimeTypes; +#endif }; QT_END_NAMESPACE diff --git a/src/printsupport/kernel/qprintdevice.cpp b/src/printsupport/kernel/qprintdevice.cpp index 373cc08bcb..e645442be2 100644 --- a/src/printsupport/kernel/qprintdevice.cpp +++ b/src/printsupport/kernel/qprintdevice.cpp @@ -237,10 +237,12 @@ QList<QPrint::ColorMode> QPrintDevice::supportedColorModes() const return isValid() ? d->supportedColorModes() : QList<QPrint::ColorMode>(); } +#ifndef QT_NO_MIMETYPE QList<QMimeType> QPrintDevice::supportedMimeTypes() const { return isValid() ? d->supportedMimeTypes() : QList<QMimeType>(); } +#endif // QT_NO_MIMETYPE #endif // QT_NO_PRINTER diff --git a/src/printsupport/kernel/qprintdevice_p.h b/src/printsupport/kernel/qprintdevice_p.h index e2a3e7872b..0250b937bd 100644 --- a/src/printsupport/kernel/qprintdevice_p.h +++ b/src/printsupport/kernel/qprintdevice_p.h @@ -123,7 +123,9 @@ public: QPrint::ColorMode defaultColorMode() const; QList<QPrint::ColorMode> supportedColorModes() const; +#ifndef QT_NO_MIMETYPE QList<QMimeType> supportedMimeTypes() const; +#endif private: friend class QPlatformPrinterSupport; diff --git a/src/widgets/dialogs/qfiledialog.cpp b/src/widgets/dialogs/qfiledialog.cpp index 625e40e4f5..70da6ff99b 100644 --- a/src/widgets/dialogs/qfiledialog.cpp +++ b/src/widgets/dialogs/qfiledialog.cpp @@ -1516,6 +1516,8 @@ void QFileDialog::setFilter(QDir::Filters filters) d->showHiddenAction->setChecked((filters & QDir::Hidden)); } +#ifndef QT_NO_MIMETYPE + static QString nameFilterForMime(const QString &mimeType) { QMimeDatabase db; @@ -1585,6 +1587,8 @@ void QFileDialog::selectMimeTypeFilter(const QString &filter) selectNameFilter(text); } +#endif // QT_NO_MIMETYPE + /*! \property QFileDialog::viewMode \brief the way files and directories are displayed in the dialog @@ -2843,9 +2847,12 @@ void QFileDialogPrivate::createWidgets() if (!options->sidebarUrls().isEmpty()) q->setSidebarUrls(options->sidebarUrls()); q->setDirectoryUrl(options->initialDirectory()); +#ifndef QT_NO_MIMETYPE if (!options->mimeTypeFilters().isEmpty()) q->setMimeTypeFilters(options->mimeTypeFilters()); - else if (!options->nameFilters().isEmpty()) + else +#endif + if (!options->nameFilters().isEmpty()) q->setNameFilters(options->nameFilters()); q->selectNameFilter(options->initiallySelectedNameFilter()); q->setDefaultSuffix(options->defaultSuffix()); diff --git a/src/widgets/dialogs/qfiledialog.h b/src/widgets/dialogs/qfiledialog.h index e921ae0d05..95209bceb5 100644 --- a/src/widgets/dialogs/qfiledialog.h +++ b/src/widgets/dialogs/qfiledialog.h @@ -119,9 +119,11 @@ public: void selectNameFilter(const QString &filter); QString selectedNameFilter() const; +#ifndef QT_NO_MIMETYPE void setMimeTypeFilters(const QStringList &filters); QStringList mimeTypeFilters() const; void selectMimeTypeFilter(const QString &filter); +#endif QDir::Filters filter() const; void setFilter(QDir::Filters filters); |