1- // SPDX-FileCopyrightText: 2011-2023 UnionTech Software Technology Co., Ltd.
1+ // SPDX-FileCopyrightText: 2011-2026 UnionTech Software Technology Co., Ltd.
22//
33// SPDX-License-Identifier: GPL-3.0-or-later
44
@@ -41,6 +41,50 @@ QT_BEGIN_NAMESPACE
4141extern Q_WIDGETS_EXPORT void qt_blurImage (QPainter *p, QImage &blurImage, qreal radius, bool quality, bool alphaOnly, int transposed = 0 );
4242QT_END_NAMESPACE
4343
44+ static const QStringList SupportedTextMimeTypes = {
45+ " application/cmd" ,
46+ " application/javascript" ,
47+ " application/json" ,
48+ " application/pkix-cert" ,
49+ " application/octet-stream" ,
50+ " application/sql" ,
51+ " application/vnd.apple.mpegurl" ,
52+ " application/vnd.nokia.qt.qmakeprofile" ,
53+ " application/vnd.nokia.xml.qt.resource" ,
54+ " application/x-desktop" ,
55+ " application/x-designer" ,
56+ " application/x-empty" ,
57+ " application/x-msdos-program" ,
58+ " application/x-pearl" ,
59+ " application/x-php" ,
60+ " application/x-shellscript" ,
61+ " application/x-sh" ,
62+ " application/x-theme" ,
63+ " application/x-cue" ,
64+ " application/x-csh" ,
65+ " application/x-asp" ,
66+ " application/x-subrip" ,
67+ " application/x-text" ,
68+ " application/x-trash" ,
69+ " application/x-xbel" ,
70+ " application/x-yaml" ,
71+ " application/x-pem-key" ,
72+ " application/xml" ,
73+ " application/yaml" ,
74+ " application/x-zerosize" ,
75+ " image/svg+xml" ,
76+ " application/x-perl" ,
77+ " application/x-ruby" ,
78+ " application/x-mpegURL" ,
79+ " application/x-wine-extension-ini" ,
80+ " model/vrml" ,
81+ " application/pkix-cert+pem" ,
82+ " application/x-pak" ,
83+ " application/x-code-workspace" ,
84+ " application/toml" ,
85+ " audio/x-mod"
86+ };
87+
4488QString Utils::m_systemLanguage;
4589
4690QString Utils::getQrcPath (const QString &imageName)
@@ -525,7 +569,8 @@ QVariantMap Utils::getThemeMapFromPath(const QString &filepath)
525569
526570bool Utils::isMimeTypeSupport (const QString &filepath)
527571{
528- QString mimeType = QMimeDatabase ().mimeTypeForFile (filepath, QMimeDatabase::MatchMode::MatchContent).name ();
572+ const QMimeType mime = QMimeDatabase ().mimeTypeForFile (filepath, QMimeDatabase::MatchMode::MatchContent);
573+ const QString mimeType = mime.name ();
529574
530575 if (mimeType.startsWith (" text/" )) {
531576 return true ;
@@ -534,54 +579,19 @@ bool Utils::isMimeTypeSupport(const QString &filepath)
534579 if (filepath.endsWith (" pub" )) {
535580 return true ;
536581 }
537- // Please check full mime type list from: https://www.freeformatter.com/mime-types-list.html
538- QStringList textMimeTypes;
539- textMimeTypes << " application/cmd"
540- << " application/javascript"
541- << " application/json"
542- << " application/pkix-cert"
543- << " application/octet-stream"
544- << " application/sql"
545- << " application/vnd.apple.mpegurl"
546- << " application/vnd.nokia.qt.qmakeprofile"
547- << " application/vnd.nokia.xml.qt.resource"
548- << " application/x-desktop"
549- << " application/x-designer"
550- << " application/x-empty"
551- << " application/x-msdos-program"
552- << " application/x-pearl"
553- << " application/x-php"
554- << " application/x-shellscript"
555- << " application/x-sh"
556- << " application/x-theme"
557- << " application/x-cue"
558- << " application/x-csh"
559- << " application/x-asp"
560- << " application/x-subrip"
561- << " application/x-text"
562- << " application/x-trash"
563- << " application/x-xbel"
564- << " application/x-yaml"
565- << " application/x-pem-key"
566- << " application/xml"
567- << " application/yaml"
568- << " application/x-zerosize"
569- << " image/svg+xml"
570- << " application/x-perl"
571- << " application/x-ruby"
572- << " application/x-mpegURL"
573- << " application/x-wine-extension-ini"
574- << " model/vrml"
575- << " application/pkix-cert+pem"
576- << " application/x-pak"
577- << " application/x-code-workspace"
578- << " application/toml"
579- << " audio/x-mod" ;
580-
581- if (textMimeTypes.contains (mimeType)) {
582+
583+ if (SupportedTextMimeTypes.contains (mimeType)) {
582584 return true ;
583585 }
584586
587+ if (mime.isValid ()) {
588+ for (const QString &supportedType : SupportedTextMimeTypes) {
589+ if (mime.inherits (supportedType)) {
590+ return true ;
591+ }
592+ }
593+ }
594+
585595 return false ;
586596}
587597
0 commit comments