@@ -525,7 +525,9 @@ QVariantMap Utils::getThemeMapFromPath(const QString &filepath)
525525
526526bool Utils::isMimeTypeSupport (const QString &filepath)
527527{
528- QString mimeType = QMimeDatabase ().mimeTypeForFile (filepath, QMimeDatabase::MatchMode::MatchContent).name ();
528+ QMimeDatabase db;
529+ const QMimeType mime = db.mimeTypeForFile (filepath, QMimeDatabase::MatchMode::MatchContent);
530+ const QString mimeType = mime.name ();
529531
530532 if (mimeType.startsWith (" text/" )) {
531533 return true ;
@@ -535,53 +537,62 @@ bool Utils::isMimeTypeSupport(const QString &filepath)
535537 return true ;
536538 }
537539 // 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" ;
540+ const QStringList textMimeTypes = {
541+ " application/cmd" ,
542+ " application/javascript" ,
543+ " application/json" ,
544+ " application/pkix-cert" ,
545+ " application/octet-stream" ,
546+ " application/sql" ,
547+ " application/vnd.apple.mpegurl" ,
548+ " application/vnd.nokia.qt.qmakeprofile" ,
549+ " application/vnd.nokia.xml.qt.resource" ,
550+ " application/x-desktop" ,
551+ " application/x-designer" ,
552+ " application/x-empty" ,
553+ " application/x-msdos-program" ,
554+ " application/x-pearl" ,
555+ " application/x-php" ,
556+ " application/x-shellscript" ,
557+ " application/x-sh" ,
558+ " application/x-theme" ,
559+ " application/x-cue" ,
560+ " application/x-csh" ,
561+ " application/x-asp" ,
562+ " application/x-subrip" ,
563+ " application/x-text" ,
564+ " application/x-trash" ,
565+ " application/x-xbel" ,
566+ " application/x-yaml" ,
567+ " application/x-pem-key" ,
568+ " application/xml" ,
569+ " application/yaml" ,
570+ " application/x-zerosize" ,
571+ " image/svg+xml" ,
572+ " application/x-perl" ,
573+ " application/x-ruby" ,
574+ " application/x-mpegURL" ,
575+ " application/x-wine-extension-ini" ,
576+ " model/vrml" ,
577+ " application/pkix-cert+pem" ,
578+ " application/x-pak" ,
579+ " application/x-code-workspace" ,
580+ " application/toml" ,
581+ " audio/x-mod"
582+ };
580583
581584 if (textMimeTypes.contains (mimeType)) {
582585 return true ;
583586 }
584587
588+ // 检查父MIME类型是否在支持列表中(如 application/schema+json → application/json)
589+ const QStringList parentTypes = mime.parentMimeTypes ();
590+ for (const QString &parent : parentTypes) {
591+ if (textMimeTypes.contains (parent)) {
592+ return true ;
593+ }
594+ }
595+
585596 return false ;
586597}
587598
0 commit comments