QMimeType: add Q_GADGET
The QMimeType class can be quite useful to graphical QML applications, especially on the desktop. [ChangeLog][QtCore][QMimeType] Add Q_GADGET, so that QML applications can make use of QMimeType's properties and methods. Change-Id: I03e6e82062558a72f5b97e65bbddfc4b7470e735 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> Reviewed-by: Jeremy Katz <jeremy@panix.com> Reviewed-by: J-P Nurmi <jpnurmi@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
This commit is contained in:
parent
d1ea481345
commit
a6f3bb21e3
@ -206,10 +206,14 @@ uint qHash(const QMimeType &key, uint seed) Q_DECL_NOTHROW
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\fn bool QMimeType::isValid() const;
|
\property QMimeType::valid
|
||||||
Returns \c true if the QMimeType object contains valid data, otherwise returns \c false.
|
\brief \c true if the QMimeType object contains valid data, \c false otherwise
|
||||||
|
|
||||||
A valid MIME type has a non-empty name().
|
A valid MIME type has a non-empty name().
|
||||||
The invalid MIME type is the default-constructed QMimeType.
|
The invalid MIME type is the default-constructed QMimeType.
|
||||||
|
|
||||||
|
While this property was introduced in 5.10, the
|
||||||
|
corresponding accessor method has always been there.
|
||||||
*/
|
*/
|
||||||
bool QMimeType::isValid() const
|
bool QMimeType::isValid() const
|
||||||
{
|
{
|
||||||
@ -217,9 +221,12 @@ bool QMimeType::isValid() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\fn bool QMimeType::isDefault() const;
|
\property QMimeType::isDefault
|
||||||
Returns \c true if this MIME type is the default MIME type which
|
\brief \c true if this MIME type is the default MIME type which
|
||||||
applies to all files: application/octet-stream.
|
applies to all files: application/octet-stream.
|
||||||
|
|
||||||
|
While this property was introduced in 5.10, the
|
||||||
|
corresponding accessor method has always been there.
|
||||||
*/
|
*/
|
||||||
bool QMimeType::isDefault() const
|
bool QMimeType::isDefault() const
|
||||||
{
|
{
|
||||||
@ -227,8 +234,11 @@ bool QMimeType::isDefault() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\fn QString QMimeType::name() const;
|
\property QMimeType::name
|
||||||
Returns the name of the MIME type.
|
\brief the name of the MIME type
|
||||||
|
|
||||||
|
While this property was introduced in 5.10, the
|
||||||
|
corresponding accessor method has always been there.
|
||||||
*/
|
*/
|
||||||
QString QMimeType::name() const
|
QString QMimeType::name() const
|
||||||
{
|
{
|
||||||
@ -236,9 +246,13 @@ QString QMimeType::name() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Returns the description of the MIME type to be displayed on user interfaces.
|
\property QMimeType::comment
|
||||||
|
\brief the description of the MIME type to be displayed on user interfaces
|
||||||
|
|
||||||
The default language (QLocale().name()) is used to select the appropriate translation.
|
The default language (QLocale().name()) is used to select the appropriate translation.
|
||||||
|
|
||||||
|
While this property was introduced in 5.10, the
|
||||||
|
corresponding accessor method has always been there.
|
||||||
*/
|
*/
|
||||||
QString QMimeType::comment() const
|
QString QMimeType::comment() const
|
||||||
{
|
{
|
||||||
@ -267,8 +281,8 @@ QString QMimeType::comment() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\fn QString QMimeType::genericIconName() const;
|
\property QMimeType::genericIconName
|
||||||
Returns the file name of a generic icon that represents the MIME type.
|
\brief the file name of a generic icon that represents the MIME type
|
||||||
|
|
||||||
This should be used if the icon returned by iconName() cannot be found on
|
This should be used if the icon returned by iconName() cannot be found on
|
||||||
the system. It is used for categories of similar types (like spreadsheets
|
the system. It is used for categories of similar types (like spreadsheets
|
||||||
@ -276,6 +290,9 @@ QString QMimeType::comment() const
|
|||||||
The freedesktop.org Icon Naming Specification lists a set of such icon names.
|
The freedesktop.org Icon Naming Specification lists a set of such icon names.
|
||||||
|
|
||||||
The icon name can be given to QIcon::fromTheme() in order to load the icon.
|
The icon name can be given to QIcon::fromTheme() in order to load the icon.
|
||||||
|
|
||||||
|
While this property was introduced in 5.10, the
|
||||||
|
corresponding accessor method has always been there.
|
||||||
*/
|
*/
|
||||||
QString QMimeType::genericIconName() const
|
QString QMimeType::genericIconName() const
|
||||||
{
|
{
|
||||||
@ -297,10 +314,13 @@ QString QMimeType::genericIconName() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\fn QString QMimeType::iconName() const;
|
\property QMimeType::iconName
|
||||||
Returns the file name of an icon image that represents the MIME type.
|
\brief the file name of an icon image that represents the MIME type
|
||||||
|
|
||||||
The icon name can be given to QIcon::fromTheme() in order to load the icon.
|
The icon name can be given to QIcon::fromTheme() in order to load the icon.
|
||||||
|
|
||||||
|
While this property was introduced in 5.10, the
|
||||||
|
corresponding accessor method has always been there.
|
||||||
*/
|
*/
|
||||||
QString QMimeType::iconName() const
|
QString QMimeType::iconName() const
|
||||||
{
|
{
|
||||||
@ -316,8 +336,11 @@ QString QMimeType::iconName() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\fn QStringList QMimeType::globPatterns() const;
|
\property QMimeType::globPatterns
|
||||||
Returns the list of glob matching patterns.
|
\brief the list of glob matching patterns
|
||||||
|
|
||||||
|
While this property was introduced in 5.10, the
|
||||||
|
corresponding accessor method has always been there.
|
||||||
*/
|
*/
|
||||||
QStringList QMimeType::globPatterns() const
|
QStringList QMimeType::globPatterns() const
|
||||||
{
|
{
|
||||||
@ -326,6 +349,9 @@ QStringList QMimeType::globPatterns() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
|
\property QMimeType::parentMimeTypes
|
||||||
|
\brief the names of parent MIME types
|
||||||
|
|
||||||
A type is a subclass of another type if any instance of the first type is
|
A type is a subclass of another type if any instance of the first type is
|
||||||
also an instance of the second. For example, all image/svg+xml files are also
|
also an instance of the second. For example, all image/svg+xml files are also
|
||||||
text/xml, text/plain and application/octet-stream files. Subclassing is about
|
text/xml, text/plain and application/octet-stream files. Subclassing is about
|
||||||
@ -336,6 +362,9 @@ QStringList QMimeType::globPatterns() const
|
|||||||
A mimetype can have multiple parents. For instance application/x-perl
|
A mimetype can have multiple parents. For instance application/x-perl
|
||||||
has two parents: application/x-executable and text/plain. This makes
|
has two parents: application/x-executable and text/plain. This makes
|
||||||
it possible to both execute perl scripts, and to open them in text editors.
|
it possible to both execute perl scripts, and to open them in text editors.
|
||||||
|
|
||||||
|
While this property was introduced in 5.10, the
|
||||||
|
corresponding accessor method has always been there.
|
||||||
*/
|
*/
|
||||||
QStringList QMimeType::parentMimeTypes() const
|
QStringList QMimeType::parentMimeTypes() const
|
||||||
{
|
{
|
||||||
@ -357,6 +386,9 @@ static void collectParentMimeTypes(const QString &mime, QStringList &allParents)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
|
\property QMimeType::allAncestors
|
||||||
|
\brief the names of direct and indirect parent MIME types
|
||||||
|
|
||||||
Return all the parent mimetypes of this mimetype, direct and indirect.
|
Return all the parent mimetypes of this mimetype, direct and indirect.
|
||||||
This includes the parent(s) of its parent(s), etc.
|
This includes the parent(s) of its parent(s), etc.
|
||||||
|
|
||||||
@ -365,6 +397,9 @@ static void collectParentMimeTypes(const QString &mime, QStringList &allParents)
|
|||||||
|
|
||||||
Note that application/octet-stream is the ultimate parent for all types
|
Note that application/octet-stream is the ultimate parent for all types
|
||||||
of files (but not directories).
|
of files (but not directories).
|
||||||
|
|
||||||
|
While this property was introduced in 5.10, the
|
||||||
|
corresponding accessor method has always been there.
|
||||||
*/
|
*/
|
||||||
QStringList QMimeType::allAncestors() const
|
QStringList QMimeType::allAncestors() const
|
||||||
{
|
{
|
||||||
@ -374,7 +409,8 @@ QStringList QMimeType::allAncestors() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Return the list of aliases of this mimetype.
|
\property QMimeType::aliases
|
||||||
|
\brief the list of aliases of this mimetype
|
||||||
|
|
||||||
For instance, for text/csv, the returned list would be:
|
For instance, for text/csv, the returned list would be:
|
||||||
text/x-csv, text/x-comma-separated-values.
|
text/x-csv, text/x-comma-separated-values.
|
||||||
@ -383,6 +419,9 @@ QStringList QMimeType::allAncestors() const
|
|||||||
never to aliases directly.
|
never to aliases directly.
|
||||||
|
|
||||||
The order of the aliases in the list is undefined.
|
The order of the aliases in the list is undefined.
|
||||||
|
|
||||||
|
While this property was introduced in 5.10, the
|
||||||
|
corresponding accessor method has always been there.
|
||||||
*/
|
*/
|
||||||
QStringList QMimeType::aliases() const
|
QStringList QMimeType::aliases() const
|
||||||
{
|
{
|
||||||
@ -390,8 +429,13 @@ QStringList QMimeType::aliases() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Returns the known suffixes for the MIME type.
|
\property QMimeType::suffixes
|
||||||
|
\brief the known suffixes for the MIME type
|
||||||
|
|
||||||
No leading dot is included, so for instance this would return "jpg", "jpeg" for image/jpeg.
|
No leading dot is included, so for instance this would return "jpg", "jpeg" for image/jpeg.
|
||||||
|
|
||||||
|
While this property was introduced in 5.10, the
|
||||||
|
corresponding accessor method has always been there.
|
||||||
*/
|
*/
|
||||||
QStringList QMimeType::suffixes() const
|
QStringList QMimeType::suffixes() const
|
||||||
{
|
{
|
||||||
@ -412,9 +456,14 @@ QStringList QMimeType::suffixes() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Returns the preferred suffix for the MIME type.
|
\property QMimeType::preferredSuffix
|
||||||
|
\brief the preferred suffix for the MIME type
|
||||||
|
|
||||||
No leading dot is included, so for instance this would return "pdf" for application/pdf.
|
No leading dot is included, so for instance this would return "pdf" for application/pdf.
|
||||||
The return value can be empty, for mime types which do not have any suffixes associated.
|
The return value can be empty, for mime types which do not have any suffixes associated.
|
||||||
|
|
||||||
|
While this property was introduced in 5.10, the
|
||||||
|
corresponding accessor method has always been there.
|
||||||
*/
|
*/
|
||||||
QString QMimeType::preferredSuffix() const
|
QString QMimeType::preferredSuffix() const
|
||||||
{
|
{
|
||||||
@ -423,8 +472,11 @@ QString QMimeType::preferredSuffix() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\fn QString QMimeType::filterString() const;
|
\property QMimeType::filterString
|
||||||
Returns a filter string usable for a file dialog.
|
\brief a filter string usable for a file dialog
|
||||||
|
|
||||||
|
While this property was introduced in 5.10, the
|
||||||
|
corresponding accessor method has always been there.
|
||||||
*/
|
*/
|
||||||
QString QMimeType::filterString() const
|
QString QMimeType::filterString() const
|
||||||
{
|
{
|
||||||
@ -449,6 +501,8 @@ QString QMimeType::filterString() const
|
|||||||
Returns \c true if this mimetype is \a mimeTypeName,
|
Returns \c true if this mimetype is \a mimeTypeName,
|
||||||
or inherits \a mimeTypeName (see parentMimeTypes()),
|
or inherits \a mimeTypeName (see parentMimeTypes()),
|
||||||
or \a mimeTypeName is an alias for this mimetype.
|
or \a mimeTypeName is an alias for this mimetype.
|
||||||
|
|
||||||
|
This method has been made invokable from QML since 5.10.
|
||||||
*/
|
*/
|
||||||
bool QMimeType::inherits(const QString &mimeTypeName) const
|
bool QMimeType::inherits(const QString &mimeTypeName) const
|
||||||
{
|
{
|
||||||
|
@ -45,6 +45,7 @@
|
|||||||
|
|
||||||
#ifndef QT_NO_MIMETYPE
|
#ifndef QT_NO_MIMETYPE
|
||||||
|
|
||||||
|
#include <QtCore/qobjectdefs.h>
|
||||||
#include <QtCore/qshareddata.h>
|
#include <QtCore/qshareddata.h>
|
||||||
#include <QtCore/qstring.h>
|
#include <QtCore/qstring.h>
|
||||||
|
|
||||||
@ -58,6 +59,21 @@ Q_CORE_EXPORT uint qHash(const QMimeType &key, uint seed = 0) Q_DECL_NOTHROW;
|
|||||||
|
|
||||||
class Q_CORE_EXPORT QMimeType
|
class Q_CORE_EXPORT QMimeType
|
||||||
{
|
{
|
||||||
|
Q_GADGET
|
||||||
|
Q_PROPERTY(bool valid READ isValid CONSTANT)
|
||||||
|
Q_PROPERTY(bool isDefault READ isDefault CONSTANT)
|
||||||
|
Q_PROPERTY(QString name READ name CONSTANT)
|
||||||
|
Q_PROPERTY(QString comment READ comment CONSTANT)
|
||||||
|
Q_PROPERTY(QString genericIconName READ genericIconName CONSTANT)
|
||||||
|
Q_PROPERTY(QString iconName READ iconName CONSTANT)
|
||||||
|
Q_PROPERTY(QStringList globPatterns READ globPatterns CONSTANT)
|
||||||
|
Q_PROPERTY(QStringList parentMimeTypes READ parentMimeTypes CONSTANT)
|
||||||
|
Q_PROPERTY(QStringList allAncestors READ allAncestors CONSTANT)
|
||||||
|
Q_PROPERTY(QStringList aliases READ aliases CONSTANT)
|
||||||
|
Q_PROPERTY(QStringList suffixes READ suffixes CONSTANT)
|
||||||
|
Q_PROPERTY(QString preferredSuffix READ preferredSuffix CONSTANT)
|
||||||
|
Q_PROPERTY(QString filterString READ filterString CONSTANT)
|
||||||
|
|
||||||
public:
|
public:
|
||||||
QMimeType();
|
QMimeType();
|
||||||
QMimeType(const QMimeType &other);
|
QMimeType(const QMimeType &other);
|
||||||
@ -94,7 +110,7 @@ public:
|
|||||||
QStringList suffixes() const;
|
QStringList suffixes() const;
|
||||||
QString preferredSuffix() const;
|
QString preferredSuffix() const;
|
||||||
|
|
||||||
bool inherits(const QString &mimeTypeName) const;
|
Q_INVOKABLE bool inherits(const QString &mimeTypeName) const;
|
||||||
|
|
||||||
QString filterString() const;
|
QString filterString() const;
|
||||||
|
|
||||||
|
@ -46,6 +46,7 @@ private slots:
|
|||||||
void genericIconName();
|
void genericIconName();
|
||||||
void iconName();
|
void iconName();
|
||||||
void suffixes();
|
void suffixes();
|
||||||
|
void gadget();
|
||||||
};
|
};
|
||||||
|
|
||||||
// ------------------------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------------------------
|
||||||
@ -201,5 +202,44 @@ void tst_qmimetype::suffixes()
|
|||||||
|
|
||||||
// ------------------------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void tst_qmimetype::gadget()
|
||||||
|
{
|
||||||
|
QMimeType instantiatedQMimeType (
|
||||||
|
buildQMimeType (
|
||||||
|
qMimeTypeName(),
|
||||||
|
qMimeTypeGenericIconName(),
|
||||||
|
qMimeTypeIconName(),
|
||||||
|
qMimeTypeGlobPatterns()
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
const QMetaObject *metaObject = &instantiatedQMimeType.staticMetaObject;
|
||||||
|
|
||||||
|
QCOMPARE(metaObject->className(), "QMimeType");
|
||||||
|
QVariantMap properties;
|
||||||
|
for (int i = metaObject->propertyOffset(); i < metaObject->propertyCount(); i++) {
|
||||||
|
QMetaProperty property = metaObject->property(i);
|
||||||
|
properties[property.name()] = property.readOnGadget(&instantiatedQMimeType);
|
||||||
|
}
|
||||||
|
|
||||||
|
QCOMPARE(properties["valid"].toBool(), instantiatedQMimeType.isValid());
|
||||||
|
QCOMPARE(properties["isDefault"].toBool(), instantiatedQMimeType.isDefault());
|
||||||
|
QCOMPARE(properties["name"].toString(), instantiatedQMimeType.name());
|
||||||
|
QCOMPARE(properties["comment"].toString(), instantiatedQMimeType.comment());
|
||||||
|
QCOMPARE(properties["genericIconName"].toString(), instantiatedQMimeType.genericIconName());
|
||||||
|
QCOMPARE(properties["iconName"].toString(), instantiatedQMimeType.iconName());
|
||||||
|
QCOMPARE(properties["globPatterns"].toStringList(), instantiatedQMimeType.globPatterns());
|
||||||
|
QCOMPARE(properties["parentMimeTypes"].toStringList(), instantiatedQMimeType.parentMimeTypes());
|
||||||
|
QCOMPARE(properties["allAncestors"].toStringList(), instantiatedQMimeType.allAncestors());
|
||||||
|
QCOMPARE(properties["aliases"].toStringList(), instantiatedQMimeType.aliases());
|
||||||
|
QCOMPARE(properties["suffixes"].toStringList(), instantiatedQMimeType.suffixes());
|
||||||
|
QCOMPARE(properties["preferredSuffix"].toString(), instantiatedQMimeType.preferredSuffix());
|
||||||
|
QCOMPARE(properties["filterString"].toString(), instantiatedQMimeType.filterString());
|
||||||
|
|
||||||
|
QVERIFY(metaObject->indexOfMethod("inherits(QString)") >= 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
// ------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
QTEST_GUILESS_MAIN(tst_qmimetype)
|
QTEST_GUILESS_MAIN(tst_qmimetype)
|
||||||
#include "tst_qmimetype.moc"
|
#include "tst_qmimetype.moc"
|
||||||
|
Loading…
Reference in New Issue
Block a user