Line | Source Code | Coverage |
---|
1 | /**************************************************************************** | - |
2 | ** | - |
3 | ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). | - |
4 | ** Contact: http://www.qt-project.org/legal | - |
5 | ** | - |
6 | ** This file is part of the QtCore module of the Qt Toolkit. | - |
7 | ** | - |
8 | ** $QT_BEGIN_LICENSE:LGPL$ | - |
9 | ** Commercial License Usage | - |
10 | ** Licensees holding valid commercial Qt licenses may use this file in | - |
11 | ** accordance with the commercial license agreement provided with the | - |
12 | ** Software or, alternatively, in accordance with the terms contained in | - |
13 | ** a written agreement between you and Digia. For licensing terms and | - |
14 | ** conditions see http://qt.digia.com/licensing. For further information | - |
15 | ** use the contact form at http://qt.digia.com/contact-us. | - |
16 | ** | - |
17 | ** GNU Lesser General Public License Usage | - |
18 | ** Alternatively, this file may be used under the terms of the GNU Lesser | - |
19 | ** General Public License version 2.1 as published by the Free Software | - |
20 | ** Foundation and appearing in the file LICENSE.LGPL included in the | - |
21 | ** packaging of this file. Please review the following information to | - |
22 | ** ensure the GNU Lesser General Public License version 2.1 requirements | - |
23 | ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. | - |
24 | ** | - |
25 | ** In addition, as a special exception, Digia gives you certain additional | - |
26 | ** rights. These rights are described in the Digia Qt LGPL Exception | - |
27 | ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. | - |
28 | ** | - |
29 | ** GNU General Public License Usage | - |
30 | ** Alternatively, this file may be used under the terms of the GNU | - |
31 | ** General Public License version 3.0 as published by the Free Software | - |
32 | ** Foundation and appearing in the file LICENSE.GPL included in the | - |
33 | ** packaging of this file. Please review the following information to | - |
34 | ** ensure the GNU General Public License version 3.0 requirements will be | - |
35 | ** met: http://www.gnu.org/copyleft/gpl.html. | - |
36 | ** | - |
37 | ** | - |
38 | ** $QT_END_LICENSE$ | - |
39 | ** | - |
40 | ****************************************************************************/ | - |
41 | | - |
42 | #include "qmimetype.h" | - |
43 | | - |
44 | #include "qmimetype_p.h" | - |
45 | #include "qmimedatabase_p.h" | - |
46 | #include "qmimeprovider_p.h" | - |
47 | | - |
48 | #include "qmimeglobpattern_p.h" | - |
49 | | - |
50 | #include <QtCore/QDebug> | - |
51 | #include <QtCore/QLocale> | - |
52 | | - |
53 | #include <memory> | - |
54 | | - |
55 | QT_BEGIN_NAMESPACE | - |
56 | | - |
57 | QMimeTypePrivate::QMimeTypePrivate() | - |
58 | : loaded(false) | - |
59 | {} executed: } Execution Count:5476 | 5476 |
60 | | - |
61 | QMimeTypePrivate::QMimeTypePrivate(const QMimeType &other) | - |
62 | : name(other.d->name), | - |
63 | localeComments(other.d->localeComments), | - |
64 | genericIconName(other.d->genericIconName), | - |
65 | iconName(other.d->iconName), | - |
66 | globPatterns(other.d->globPatterns), | - |
67 | loaded(other.d->loaded) | - |
68 | {} | 0 |
69 | | - |
70 | void QMimeTypePrivate::clear() | - |
71 | { | - |
72 | name.clear(); never executed (the execution status of this line is deduced): name.clear(); | - |
73 | localeComments.clear(); never executed (the execution status of this line is deduced): localeComments.clear(); | - |
74 | genericIconName.clear(); never executed (the execution status of this line is deduced): genericIconName.clear(); | - |
75 | iconName.clear(); never executed (the execution status of this line is deduced): iconName.clear(); | - |
76 | globPatterns.clear(); never executed (the execution status of this line is deduced): globPatterns.clear(); | - |
77 | loaded = false; never executed (the execution status of this line is deduced): loaded = false; | - |
78 | } | 0 |
79 | | - |
80 | void QMimeTypePrivate::addGlobPattern(const QString &pattern) | - |
81 | { | - |
82 | globPatterns.append(pattern); never executed (the execution status of this line is deduced): globPatterns.append(pattern); | - |
83 | } | 0 |
84 | | - |
85 | /*! | - |
86 | \class QMimeType | - |
87 | \inmodule QtCore | - |
88 | \ingroup shared | - |
89 | \brief The QMimeType class describes types of file or data, represented by a MIME type string. | - |
90 | | - |
91 | \since 5.0 | - |
92 | | - |
93 | For instance a file named "readme.txt" has the MIME type "text/plain". | - |
94 | The MIME type can be determined from the file name, or from the file | - |
95 | contents, or from both. MIME type determination can also be done on | - |
96 | buffers of data not coming from files. | - |
97 | | - |
98 | Determining the MIME type of a file can be useful to make sure your | - |
99 | application supports it. It is also useful in file-manager-like applications | - |
100 | or widgets, in order to display an appropriate icon() for the file, or even | - |
101 | the descriptive comment() in detailed views. | - |
102 | | - |
103 | To check if a file has the expected MIME type, you should use inherits() | - |
104 | rather than a simple string comparison based on the name(). This is because | - |
105 | MIME types can inherit from each other: for instance a C source file is | - |
106 | a specific type of plain text file, so text/x-csrc inherits text/plain. | - |
107 | | - |
108 | \sa QMimeDatabase | - |
109 | */ | - |
110 | | - |
111 | /*! | - |
112 | \fn QMimeType::QMimeType(); | - |
113 | Constructs this QMimeType object initialized with default property values that indicate an invalid MIME type. | - |
114 | */ | - |
115 | QMimeType::QMimeType() : | - |
116 | d(new QMimeTypePrivate()) | - |
117 | { | - |
118 | } executed: } Execution Count:18 | 18 |
119 | | - |
120 | /*! | - |
121 | \fn QMimeType::QMimeType(const QMimeType &other); | - |
122 | Constructs this QMimeType object as a copy of \a other. | - |
123 | */ | - |
124 | QMimeType::QMimeType(const QMimeType &other) : | - |
125 | d(other.d) | - |
126 | { | - |
127 | } executed: } Execution Count:3388 | 3388 |
128 | | - |
129 | /*! | - |
130 | \fn QMimeType &QMimeType::operator=(const QMimeType &other); | - |
131 | Assigns the data of \a other to this QMimeType object, and returns a reference to this object. | - |
132 | */ | - |
133 | QMimeType &QMimeType::operator=(const QMimeType &other) | - |
134 | { | - |
135 | if (d != other.d) partially evaluated: d != other.d yes Evaluation Count:16 | no Evaluation Count:0 |
| 0-16 |
136 | d = other.d; executed: d = other.d; Execution Count:16 | 16 |
137 | return *this; executed: return *this; Execution Count:16 | 16 |
138 | } | - |
139 | | - |
140 | /*! | - |
141 | \fn QMimeType::QMimeType(const QMimeTypePrivate &dd); | - |
142 | Assigns the data of the QMimeTypePrivate \a dd to this QMimeType object, and returns a reference to this object. | - |
143 | \internal | - |
144 | */ | - |
145 | QMimeType::QMimeType(const QMimeTypePrivate &dd) : | - |
146 | d(new QMimeTypePrivate(dd)) | - |
147 | { | - |
148 | } executed: } Execution Count:5458 | 5458 |
149 | | - |
150 | /*! | - |
151 | \fn void QMimeType::swap(QMimeType &other); | - |
152 | Swaps QMimeType \a other with this QMimeType object. | - |
153 | | - |
154 | This operation is very fast and never fails. | - |
155 | | - |
156 | The swap() method helps with the implementation of assignment | - |
157 | operators in an exception-safe way. For more information consult | - |
158 | \l {http://en.wikibooks.org/wiki/More_C++_Idioms/Copy-and-swap} | - |
159 | {More C++ Idioms - Copy-and-swap}. | - |
160 | */ | - |
161 | | - |
162 | /*! | - |
163 | \fn QMimeType::~QMimeType(); | - |
164 | Destroys the QMimeType object, and releases the d pointer. | - |
165 | */ | - |
166 | QMimeType::~QMimeType() | - |
167 | { | - |
168 | } | - |
169 | | - |
170 | /*! | - |
171 | \fn bool QMimeType::operator==(const QMimeType &other) const; | - |
172 | Returns true if \a other equals this QMimeType object, otherwise returns false. | - |
173 | The name is the unique identifier for a mimetype, so two mimetypes with | - |
174 | the same name, are equal. | - |
175 | */ | - |
176 | bool QMimeType::operator==(const QMimeType &other) const | - |
177 | { | - |
178 | return d == other.d || d->name == other.d->name; never executed: return d == other.d || d->name == other.d->name; | 0 |
179 | } | - |
180 | | - |
181 | /*! | - |
182 | \fn bool QMimeType::operator!=(const QMimeType &other) const; | - |
183 | Returns true if \a other does not equal this QMimeType object, otherwise returns false. | - |
184 | */ | - |
185 | | - |
186 | /*! | - |
187 | \fn bool QMimeType::isValid() const; | - |
188 | Returns true if the QMimeType object contains valid data, otherwise returns false. | - |
189 | A valid MIME type has a non-empty name(). | - |
190 | The invalid MIME type is the default-constructed QMimeType. | - |
191 | */ | - |
192 | bool QMimeType::isValid() const | - |
193 | { | - |
194 | return !d->name.isEmpty(); executed: return !d->name.isEmpty(); Execution Count:2118 | 2118 |
195 | } | - |
196 | | - |
197 | /*! | - |
198 | \fn bool QMimeType::isDefault() const; | - |
199 | Returns true if this MIME type is the default MIME type which | - |
200 | applies to all files: application/octet-stream. | - |
201 | */ | - |
202 | bool QMimeType::isDefault() const | - |
203 | { | - |
204 | return d->name == QMimeDatabasePrivate::instance()->defaultMimeType(); executed: return d->name == QMimeDatabasePrivate::instance()->defaultMimeType(); Execution Count:9 | 9 |
205 | } | - |
206 | | - |
207 | /*! | - |
208 | \fn QString QMimeType::name() const; | - |
209 | Returns the name of the MIME type. | - |
210 | */ | - |
211 | QString QMimeType::name() const | - |
212 | { | - |
213 | return d->name; executed: return d->name; Execution Count:4837 | 4837 |
214 | } | - |
215 | | - |
216 | /*! | - |
217 | Returns the description of the MIME type to be displayed on user interfaces. | - |
218 | | - |
219 | The system language (QLocale::system().name()) is used to select the appropriate translation. | - |
220 | */ | - |
221 | QString QMimeType::comment() const | - |
222 | { | - |
223 | QMimeDatabasePrivate::instance()->provider()->loadMimeTypePrivate(*d); executed (the execution status of this line is deduced): QMimeDatabasePrivate::instance()->provider()->loadMimeTypePrivate(*d); | - |
224 | | - |
225 | QStringList languageList; executed (the execution status of this line is deduced): QStringList languageList; | - |
226 | languageList << QLocale::system().name(); executed (the execution status of this line is deduced): languageList << QLocale::system().name(); | - |
227 | languageList << QLocale::system().uiLanguages(); executed (the execution status of this line is deduced): languageList << QLocale::system().uiLanguages(); | - |
228 | Q_FOREACH (const QString &language, languageList) { executed (the execution status of this line is deduced): for (QForeachContainer<__typeof__(languageList)> _container_(languageList); !_container_.brk && _container_.i != _container_.e; __extension__ ({ ++_container_.brk; ++_container_.i; })) for (const QString &language = *_container_.i;; __extension__ ({--_container_.brk; break;})) { | - |
229 | const QString lang = language == QLatin1String("C") ? QLatin1String("en_US") : language; partially evaluated: language == QLatin1String("C") yes Evaluation Count:6 | no Evaluation Count:0 |
| 0-6 |
230 | const QString comm = d->localeComments.value(lang); executed (the execution status of this line is deduced): const QString comm = d->localeComments.value(lang); | - |
231 | if (!comm.isEmpty()) partially evaluated: !comm.isEmpty() yes Evaluation Count:6 | no Evaluation Count:0 |
| 0-6 |
232 | return comm; executed: return comm; Execution Count:6 | 6 |
233 | const int pos = lang.indexOf(QLatin1Char('_')); never executed (the execution status of this line is deduced): const int pos = lang.indexOf(QLatin1Char('_')); | - |
234 | if (pos != -1) { never evaluated: pos != -1 | 0 |
235 | // "pt_BR" not found? try just "pt" | - |
236 | const QString shortLang = lang.left(pos); never executed (the execution status of this line is deduced): const QString shortLang = lang.left(pos); | - |
237 | const QString commShort = d->localeComments.value(shortLang); never executed (the execution status of this line is deduced): const QString commShort = d->localeComments.value(shortLang); | - |
238 | if (!commShort.isEmpty()) never evaluated: !commShort.isEmpty() | 0 |
239 | return commShort; never executed: return commShort; | 0 |
240 | } | 0 |
241 | } | 0 |
242 | | - |
243 | // Use the mimetype name as fallback | - |
244 | return d->name; never executed: return d->name; | 0 |
245 | } | - |
246 | | - |
247 | /*! | - |
248 | \fn QString QMimeType::genericIconName() const; | - |
249 | Returns the file name of a generic icon that represents the MIME type. | - |
250 | | - |
251 | This should be used if the icon returned by iconName() cannot be found on | - |
252 | the system. It is used for categories of similar types (like spreadsheets | - |
253 | or archives) that can use a common icon. | - |
254 | The freedesktop.org Icon Naming Specification lists a set of such icon names. | - |
255 | | - |
256 | The icon name can be given to QIcon::fromTheme() in order to load the icon. | - |
257 | */ | - |
258 | QString QMimeType::genericIconName() const | - |
259 | { | - |
260 | QMimeDatabasePrivate::instance()->provider()->loadGenericIcon(*d); executed (the execution status of this line is deduced): QMimeDatabasePrivate::instance()->provider()->loadGenericIcon(*d); | - |
261 | if (d->genericIconName.isEmpty()) { evaluated: d->genericIconName.isEmpty() yes Evaluation Count:2 | yes Evaluation Count:2 |
| 2 |
262 | // From the spec: | - |
263 | // If the generic icon name is empty (not specified by the mimetype definition) | - |
264 | // then the mimetype is used to generate the generic icon by using the top-level | - |
265 | // media type (e.g. "video" in "video/ogg") and appending "-x-generic" | - |
266 | // (i.e. "video-x-generic" in the previous example). | - |
267 | QString group = name(); executed (the execution status of this line is deduced): QString group = name(); | - |
268 | const int slashindex = group.indexOf(QLatin1Char('/')); executed (the execution status of this line is deduced): const int slashindex = group.indexOf(QLatin1Char('/')); | - |
269 | if (slashindex != -1) partially evaluated: slashindex != -1 yes Evaluation Count:2 | no Evaluation Count:0 |
| 0-2 |
270 | group = group.left(slashindex); executed: group = group.left(slashindex); Execution Count:2 | 2 |
271 | return group + QLatin1String("-x-generic"); executed: return group + QLatin1String("-x-generic"); Execution Count:2 | 2 |
272 | } | - |
273 | return d->genericIconName; executed: return d->genericIconName; Execution Count:2 | 2 |
274 | } | - |
275 | | - |
276 | /*! | - |
277 | \fn QString QMimeType::iconName() const; | - |
278 | Returns the file name of an icon image that represents the MIME type. | - |
279 | | - |
280 | The icon name can be given to QIcon::fromTheme() in order to load the icon. | - |
281 | */ | - |
282 | QString QMimeType::iconName() const | - |
283 | { | - |
284 | QMimeDatabasePrivate::instance()->provider()->loadIcon(*d); executed (the execution status of this line is deduced): QMimeDatabasePrivate::instance()->provider()->loadIcon(*d); | - |
285 | if (d->iconName.isEmpty()) { partially evaluated: d->iconName.isEmpty() yes Evaluation Count:4 | no Evaluation Count:0 |
| 0-4 |
286 | // Make default icon name from the mimetype name | - |
287 | d->iconName = name(); executed (the execution status of this line is deduced): d->iconName = name(); | - |
288 | const int slashindex = d->iconName.indexOf(QLatin1Char('/')); executed (the execution status of this line is deduced): const int slashindex = d->iconName.indexOf(QLatin1Char('/')); | - |
289 | if (slashindex != -1) partially evaluated: slashindex != -1 yes Evaluation Count:4 | no Evaluation Count:0 |
| 0-4 |
290 | d->iconName[slashindex] = QLatin1Char('-'); executed: d->iconName[slashindex] = QLatin1Char('-'); Execution Count:4 | 4 |
291 | } executed: } Execution Count:4 | 4 |
292 | return d->iconName; executed: return d->iconName; Execution Count:4 | 4 |
293 | } | - |
294 | | - |
295 | /*! | - |
296 | \fn QStringList QMimeType::globPatterns() const; | - |
297 | Returns the list of glob matching patterns. | - |
298 | */ | - |
299 | QStringList QMimeType::globPatterns() const | - |
300 | { | - |
301 | QMimeDatabasePrivate::instance()->provider()->loadMimeTypePrivate(*d); executed (the execution status of this line is deduced): QMimeDatabasePrivate::instance()->provider()->loadMimeTypePrivate(*d); | - |
302 | return d->globPatterns; executed: return d->globPatterns; Execution Count:9 | 9 |
303 | } | - |
304 | | - |
305 | /*! | - |
306 | A type is a subclass of another type if any instance of the first type is | - |
307 | also an instance of the second. For example, all image/svg+xml files are also | - |
308 | text/xml, text/plain and application/octet-stream files. Subclassing is about | - |
309 | the format, rather than the category of the data (for example, there is no | - |
310 | 'generic spreadsheet' class that all spreadsheets inherit from). | - |
311 | Conversely, the parent mimetype of image/svg+xml is text/xml. | - |
312 | | - |
313 | A mimetype can have multiple parents. For instance application/x-perl | - |
314 | has two parents: application/x-executable and text/plain. This makes | - |
315 | it possible to both execute perl scripts, and to open them in text editors. | - |
316 | */ | - |
317 | QStringList QMimeType::parentMimeTypes() const | - |
318 | { | - |
319 | return QMimeDatabasePrivate::instance()->provider()->parents(d->name); executed: return QMimeDatabasePrivate::instance()->provider()->parents(d->name); Execution Count:8 | 8 |
320 | } | - |
321 | | - |
322 | static void collectParentMimeTypes(const QString &mime, QStringList &allParents) | - |
323 | { | - |
324 | QStringList parents = QMimeDatabasePrivate::instance()->provider()->parents(mime); executed (the execution status of this line is deduced): QStringList parents = QMimeDatabasePrivate::instance()->provider()->parents(mime); | - |
325 | foreach (const QString &parent, parents) { executed (the execution status of this line is deduced): for (QForeachContainer<__typeof__(parents)> _container_(parents); !_container_.brk && _container_.i != _container_.e; __extension__ ({ ++_container_.brk; ++_container_.i; })) for (const QString &parent = *_container_.i;; __extension__ ({--_container_.brk; break;})) { | - |
326 | // I would use QSet, but since order matters I better not | - |
327 | if (!allParents.contains(parent)) evaluated: !allParents.contains(parent) yes Evaluation Count:12 | yes Evaluation Count:2 |
| 2-12 |
328 | allParents.append(parent); executed: allParents.append(parent); Execution Count:12 | 12 |
329 | } executed: } Execution Count:14 | 14 |
330 | // We want a breadth-first search, so that the least-specific parent (octet-stream) is last | - |
331 | // This means iterating twice, unfortunately. | - |
332 | foreach (const QString &parent, parents) { executed (the execution status of this line is deduced): for (QForeachContainer<__typeof__(parents)> _container_(parents); !_container_.brk && _container_.i != _container_.e; __extension__ ({ ++_container_.brk; ++_container_.i; })) for (const QString &parent = *_container_.i;; __extension__ ({--_container_.brk; break;})) { | - |
333 | collectParentMimeTypes(parent, allParents); executed (the execution status of this line is deduced): collectParentMimeTypes(parent, allParents); | - |
334 | } executed: } Execution Count:14 | 14 |
335 | } executed: } Execution Count:18 | 18 |
336 | | - |
337 | /*! | - |
338 | Return all the parent mimetypes of this mimetype, direct and indirect. | - |
339 | This includes the parent(s) of its parent(s), etc. | - |
340 | | - |
341 | For instance, for image/svg+xml the list would be: | - |
342 | application/xml, text/plain, application/octet-stream. | - |
343 | | - |
344 | Note that application/octet-stream is the ultimate parent for all types | - |
345 | of files (but not directories). | - |
346 | */ | - |
347 | QStringList QMimeType::allAncestors() const | - |
348 | { | - |
349 | QStringList allParents; executed (the execution status of this line is deduced): QStringList allParents; | - |
350 | collectParentMimeTypes(d->name, allParents); executed (the execution status of this line is deduced): collectParentMimeTypes(d->name, allParents); | - |
351 | return allParents; executed: return allParents; Execution Count:4 | 4 |
352 | } | - |
353 | | - |
354 | /*! | - |
355 | Return the list of aliases of this mimetype. | - |
356 | | - |
357 | For instance, for text/csv, the returned list would be: | - |
358 | text/x-csv, text/x-comma-separated-values. | - |
359 | | - |
360 | Note that all QMimeType instances refer to proper mimetypes, | - |
361 | never to aliases directly. | - |
362 | | - |
363 | The order of the aliases in the list is undefined. | - |
364 | */ | - |
365 | QStringList QMimeType::aliases() const | - |
366 | { | - |
367 | return QMimeDatabasePrivate::instance()->provider()->listAliases(d->name); executed: return QMimeDatabasePrivate::instance()->provider()->listAliases(d->name); Execution Count:4 | 4 |
368 | } | - |
369 | | - |
370 | /*! | - |
371 | Returns the known suffixes for the MIME type. | - |
372 | No leading dot is included, so for instance this would return "jpg", "jpeg" for image/jpeg. | - |
373 | */ | - |
374 | QStringList QMimeType::suffixes() const | - |
375 | { | - |
376 | QMimeDatabasePrivate::instance()->provider()->loadMimeTypePrivate(*d); executed (the execution status of this line is deduced): QMimeDatabasePrivate::instance()->provider()->loadMimeTypePrivate(*d); | - |
377 | | - |
378 | QStringList result; executed (the execution status of this line is deduced): QStringList result; | - |
379 | foreach (const QString &pattern, d->globPatterns) { executed (the execution status of this line is deduced): for (QForeachContainer<__typeof__(d->globPatterns)> _container_(d->globPatterns); !_container_.brk && _container_.i != _container_.e; __extension__ ({ ++_container_.brk; ++_container_.i; })) for (const QString &pattern = *_container_.i;; __extension__ ({--_container_.brk; break;})) { | - |
380 | // Not a simple suffix if it looks like: README or *. or *.* or *.JP*G or *.JP? | - |
381 | if (pattern.startsWith(QLatin1String("*.")) && evaluated: pattern.startsWith(QLatin1String("*.")) yes Evaluation Count:16 | yes Evaluation Count:2 |
| 2-16 |
382 | pattern.length() > 2 && partially evaluated: pattern.length() > 2 yes Evaluation Count:16 | no Evaluation Count:0 |
| 0-16 |
383 | pattern.indexOf(QLatin1Char('*'), 2) < 0 && pattern.indexOf(QLatin1Char('?'), 2) < 0) { partially evaluated: pattern.indexOf(QLatin1Char('*'), 2) < 0 yes Evaluation Count:16 | no Evaluation Count:0 |
partially evaluated: pattern.indexOf(QLatin1Char('?'), 2) < 0 yes Evaluation Count:16 | no Evaluation Count:0 |
| 0-16 |
384 | const QString suffix = pattern.mid(2); executed (the execution status of this line is deduced): const QString suffix = pattern.mid(2); | - |
385 | result.append(suffix); executed (the execution status of this line is deduced): result.append(suffix); | - |
386 | } executed: } Execution Count:16 | 16 |
387 | } executed: } Execution Count:18 | 18 |
388 | | - |
389 | return result; executed: return result; Execution Count:9 | 9 |
390 | } | - |
391 | | - |
392 | /*! | - |
393 | Returns the preferred suffix for the MIME type. | - |
394 | No leading dot is included, so for instance this would return "pdf" for application/pdf. | - |
395 | The return value can be empty, for mime types which do not have any suffixes associated. | - |
396 | */ | - |
397 | QString QMimeType::preferredSuffix() const | - |
398 | { | - |
399 | const QStringList suffixList = suffixes(); executed (the execution status of this line is deduced): const QStringList suffixList = suffixes(); | - |
400 | return suffixList.isEmpty() ? QString() : suffixList.at(0); executed: return suffixList.isEmpty() ? QString() : suffixList.at(0); Execution Count:9 | 9 |
401 | } | - |
402 | | - |
403 | /*! | - |
404 | \fn QString QMimeType::filterString() const; | - |
405 | Returns a filter string usable for a file dialog. | - |
406 | */ | - |
407 | QString QMimeType::filterString() const | - |
408 | { | - |
409 | QMimeDatabasePrivate::instance()->provider()->loadMimeTypePrivate(*d); never executed (the execution status of this line is deduced): QMimeDatabasePrivate::instance()->provider()->loadMimeTypePrivate(*d); | - |
410 | QString filter; never executed (the execution status of this line is deduced): QString filter; | - |
411 | | - |
412 | if (!d->globPatterns.empty()) { never evaluated: !d->globPatterns.empty() | 0 |
413 | filter += comment() + QLatin1String(" ("); never executed (the execution status of this line is deduced): filter += comment() + QLatin1String(" ("); | - |
414 | for (int i = 0; i < d->globPatterns.size(); ++i) { never evaluated: i < d->globPatterns.size() | 0 |
415 | if (i != 0) | 0 |
416 | filter += QLatin1Char(' '); never executed: filter += QLatin1Char(' '); | 0 |
417 | filter += d->globPatterns.at(i); never executed (the execution status of this line is deduced): filter += d->globPatterns.at(i); | - |
418 | } | 0 |
419 | filter += QLatin1Char(')'); never executed (the execution status of this line is deduced): filter += QLatin1Char(')'); | - |
420 | } | 0 |
421 | | - |
422 | return filter; never executed: return filter; | 0 |
423 | } | - |
424 | | - |
425 | /*! | - |
426 | \fn bool QMimeType::inherits(const QString &mimeTypeName) const; | - |
427 | Returns true if this mimetype is \a mimeTypeName, | - |
428 | or inherits \a mimeTypeName (see parentMimeTypes()), | - |
429 | or \a mimeTypeName is an alias for this mimetype. | - |
430 | */ | - |
431 | bool QMimeType::inherits(const QString &mimeTypeName) const | - |
432 | { | - |
433 | if (d->name == mimeTypeName) evaluated: d->name == mimeTypeName yes Evaluation Count:2 | yes Evaluation Count:26 |
| 2-26 |
434 | return true; executed: return true; Execution Count:2 | 2 |
435 | return QMimeDatabasePrivate::instance()->inherits(d->name, mimeTypeName); executed: return QMimeDatabasePrivate::instance()->inherits(d->name, mimeTypeName); Execution Count:26 | 26 |
436 | } | - |
437 | | - |
438 | QT_END_NAMESPACE | - |
439 | | - |
| | |