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
This commit is contained in:
Albert Astals Cid 2010-12-27 23:00:29 +00:00
parent 870fd3ba12
commit 0fdc76180d
2 changed files with 13 additions and 5 deletions

View file

@ -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})

View file

@ -20,6 +20,7 @@
#include <kaction.h>
#include <kactioncollection.h>
#include <kicon.h>
#include <kimageio.h>
#include <klocale.h>
#include <okular/core/page.h>
@ -71,12 +72,15 @@ KIMGIOGenerator::~KIMGIOGenerator()
bool KIMGIOGenerator::loadDocument( const QString & fileName, QVector<Okular::Page*> & 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<Okular::Pa
bool KIMGIOGenerator::loadDocumentFromData( const QByteArray & fileData, QVector<Okular::Page*> & 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 );