From 0fdc76180dc0577f50a95dec5477e667192964d1 Mon Sep 17 00:00:00 2001 From: Albert Astals Cid Date: Mon, 27 Dec 2010 23:00:29 +0000 Subject: [PATCH] QImageReader is a bit dumb and does not know how to open jpeg files with .png extension so use kmimetype that is somehow smarter svn path=/trunk/KDE/kdegraphics/okular/; revision=1209685 --- generators/kimgio/CMakeLists.txt | 2 +- generators/kimgio/generator_kimgio.cpp | 16 ++++++++++++---- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/generators/kimgio/CMakeLists.txt b/generators/kimgio/CMakeLists.txt index 65a1ab401..07d9f0c94 100644 --- a/generators/kimgio/CMakeLists.txt +++ b/generators/kimgio/CMakeLists.txt @@ -10,7 +10,7 @@ set(okularGenerator_kimgio_PART_SRCS generator_kimgio.cpp ) kde4_add_plugin(okularGenerator_kimgio ${okularGenerator_kimgio_PART_SRCS}) -target_link_libraries(okularGenerator_kimgio okularcore ${KDE4_KDEUI_LIBS} ${QT_QTXML_LIBRARY} ) +target_link_libraries(okularGenerator_kimgio okularcore ${KDE4_KDEUI_LIBS} ${KDE4_KIO_LIBS} ${QT_QTXML_LIBRARY} ) install(TARGETS okularGenerator_kimgio DESTINATION ${PLUGIN_INSTALL_DIR}) diff --git a/generators/kimgio/generator_kimgio.cpp b/generators/kimgio/generator_kimgio.cpp index 6f2c76d36..4d6a903c4 100644 --- a/generators/kimgio/generator_kimgio.cpp +++ b/generators/kimgio/generator_kimgio.cpp @@ -20,6 +20,7 @@ #include #include #include +#include #include #include @@ -71,12 +72,15 @@ KIMGIOGenerator::~KIMGIOGenerator() bool KIMGIOGenerator::loadDocument( const QString & fileName, QVector & pagesVector ) { - QImageReader reader( fileName ); + const QString mime = KMimeType::findByFileContent(fileName)->name(); + const QStringList types = KImageIO::typeForMime(mime); + const QByteArray type = !types.isEmpty() ? types[0].toAscii() : QByteArray(); + QImageReader reader( fileName, type ); if ( !reader.read( &m_img ) ) { emit error( i18n( "Unable to load document: %1", reader.errorString() ), -1 ); return false; } - docInfo.set( Okular::DocumentInfo::MimeType, KMimeType::findByPath(fileName)->name() ); + docInfo.set( Okular::DocumentInfo::MimeType, mime ); pagesVector.resize( 1 ); @@ -88,16 +92,20 @@ bool KIMGIOGenerator::loadDocument( const QString & fileName, QVector & pagesVector ) { + const QString mime = KMimeType::findByContent(fileData)->name(); + const QStringList types = KImageIO::typeForMime(mime); + const QByteArray type = !types.isEmpty() ? types[0].toAscii() : QByteArray(); + QBuffer buffer; buffer.setData( fileData ); buffer.open( QIODevice::ReadOnly ); - QImageReader reader( &buffer ); + QImageReader reader( &buffer, type ); if ( !reader.read( &m_img ) ) { emit error( i18n( "Unable to load document: %1", reader.errorString() ), -1 ); return false; } - docInfo.set( Okular::DocumentInfo::MimeType, KMimeType::findByContent(fileData)->name() ); + docInfo.set( Okular::DocumentInfo::MimeType, mime ); pagesVector.resize( 1 );