From be0023b02a2a672f865203d20dd64330e11edec1 Mon Sep 17 00:00:00 2001 From: Pino Toscano Date: Wed, 25 Jul 2007 09:44:48 +0000 Subject: [PATCH] recognize correctly the compressed mimetypes for pdf, ps and dvi svn path=/trunk/KDE/kdegraphics/okular/; revision=692295 --- part.cpp | 31 ++++++++++++++++++++++++++----- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/part.cpp b/part.cpp index 5b1216bee..1bca8c32d 100644 --- a/part.cpp +++ b/part.cpp @@ -764,6 +764,28 @@ bool Part::openFile() return true; } +static QString compressedMimeFor( const QString& mime_to_check ) +{ + static QHash< QString, QString > compressedMimeMap; + if ( compressedMimeMap.isEmpty() ) + { + compressedMimeMap[ QString::fromLatin1( "application/x-gzip" ) ] = + QString::fromLatin1( "application/x-gzip" ); + compressedMimeMap[ QString::fromLatin1( "application/x-bzip" ) ] = + QString::fromLatin1( "application/x-bzip" ); + compressedMimeMap[ QString::fromLatin1( "application/x-bzpdf" ) ] = + QString::fromLatin1( "application/x-bzip" ); + compressedMimeMap[ QString::fromLatin1( "application/x-bzpostscript" ) ] = + QString::fromLatin1( "application/x-bzip" ); + compressedMimeMap[ QString::fromLatin1( "application/x-bzdvi" ) ] = + QString::fromLatin1( "application/x-bzip" ); + } + QHash< QString, QString >::const_iterator it = compressedMimeMap.find( mime_to_check ); + if ( it != compressedMimeMap.end() ) + return it.value(); + + return QString(); +} bool Part::openUrl(const KUrl &url) { @@ -776,11 +798,10 @@ bool Part::openUrl(const KUrl &url) const KMimeType::Ptr mimetype = KMimeType::findByPath( path ); bool isCompressedFile = false; KUrl tempUrl; - if (( mimetype->name() == "application/x-gzip" ) - || ( mimetype->name() == "application/x-bzip" ) - || ( mimetype->parentMimeType() == "application/x-gzip" ) - || ( mimetype->parentMimeType() == "application/x-bzip" ) - ) + QString compressedMime = compressedMimeFor( mimetype->name() ); + if ( compressedMime.isEmpty() ) + compressedMime = compressedMimeFor( mimetype->parentMimeType() ); + if ( !compressedMime.isEmpty() ) { isCompressedFile=handleCompressed(tempUrl,path,mimetype); } -- GitLab