diff --git a/generators/comicbook/unrar.cpp b/generators/comicbook/unrar.cpp index 643d46258..1288f0b8c 100644 --- a/generators/comicbook/unrar.cpp +++ b/generators/comicbook/unrar.cpp @@ -48,9 +48,12 @@ UnrarHelper::UnrarHelper() if ( !kind ) { // no luck so far, assume unrar-nonfree - kind = new NonFreeUnrarFlavour(); + kDebug() << "No unrar detected."; + } + else + { + kDebug() << "detected:" << kind->name(); } - kDebug() << "detected:" << kind->name(); } UnrarHelper::~UnrarHelper() @@ -71,6 +74,9 @@ Unrar::~Unrar() bool Unrar::open( const QString &fileName ) { + if ( !isSuitableVersionAvailable() ) + return false; + delete mTempDir; mTempDir = new KTempDir(); @@ -101,6 +107,9 @@ QStringList Unrar::list() mStdOutData.clear(); mStdErrData.clear(); + if ( !isSuitableVersionAvailable() ) + return QStringList(); + mProcess = new QProcess( this ); connect( mProcess, SIGNAL( readyReadStandardOutput() ), SLOT( readFromStdout() ) ); @@ -117,6 +126,9 @@ QStringList Unrar::list() QByteArray Unrar::contentOf( const QString &fileName ) const { + if ( !isSuitableVersionAvailable() ) + return QByteArray(); + QFile file( mTempDir->name() + fileName ); if ( !file.open( QIODevice::ReadOnly ) ) return QByteArray(); @@ -126,6 +138,14 @@ QByteArray Unrar::contentOf( const QString &fileName ) const bool Unrar::isAvailable() { + return helper->kind; +} + +bool Unrar::isSuitableVersionAvailable() +{ + if ( !isAvailable() ) + return false; + return dynamic_cast< NonFreeUnrarFlavour * >( helper->kind ); } diff --git a/generators/comicbook/unrar.h b/generators/comicbook/unrar.h index 39ab83bf8..2913a2b9b 100644 --- a/generators/comicbook/unrar.h +++ b/generators/comicbook/unrar.h @@ -47,6 +47,7 @@ class Unrar : public QObject QByteArray contentOf( const QString &fileName ) const; static bool isAvailable(); + static bool isSuitableVersionAvailable(); private Q_SLOTS: void readFromStdout();