okular/generators/comicbook/unrar.h
Albert Astals Cid 78cf6bd910 CI: enable more modernize checks
Since unfortunately some of the autogenerated includes don't pass the
checks we do a trick of building out of source and then specifying the
.*/okular/.* path as the only includes we care about
2019-12-18 12:51:13 +01:00

87 lines
2.2 KiB
C++

/***************************************************************************
* Copyright (C) 2007 by Tobias Koenig <tokoe@kde.org> *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
***************************************************************************/
#ifndef UNRAR_H
#define UNRAR_H
#include <QObject>
#include <QProcess>
#include <QStringList>
#include <unrarflavours.h>
class QEventLoop;
class QTemporaryDir;
#if defined(WITH_KPTY)
class KPtyProcess;
#endif
class Unrar : public QObject
{
Q_OBJECT
public:
/**
* Creates a new unrar object.
*/
Unrar();
/**
* Destroys the unrar object.
*/
~Unrar() override;
/**
* Opens given rar archive.
*/
bool open( const QString &fileName );
/**
* Returns the list of files from the archive.
*/
QStringList list();
/**
* Returns the content of the file with the given name.
*/
QByteArray contentOf( const QString &fileName ) const;
/**
* Returns a new device for reading the file with the given name.
*/
QIODevice* createDevice( const QString &fileName ) const;
static bool isAvailable();
static bool isSuitableVersionAvailable();
private Q_SLOTS:
void readFromStdout();
void readFromStderr();
void finished( int exitCode, QProcess::ExitStatus exitStatus );
private:
int startSyncProcess( const ProcessArgs &args );
void writeToProcess( const QByteArray &data );
#if defined(WITH_KPTY)
KPtyProcess *mProcess;
#else
QProcess *mProcess;
#endif
QEventLoop *mLoop;
QString mFileName;
QByteArray mStdOutData;
QByteArray mStdErrData;
QTemporaryDir *mTempDir;
};
#endif