mirror of
https://github.com/YACReader/yacreader
synced 2025-05-28 03:10:27 -04:00
80 lines
1.7 KiB
C++
80 lines
1.7 KiB
C++
#ifndef COMPRESSED_ARCHIVE_H
|
|
#define COMPRESSED_ARCHIVE_H
|
|
|
|
#include <QObject>
|
|
|
|
#ifdef Q_OS_UNIX
|
|
#include "libp7zip/CPP/7zip/ICoder.h"
|
|
#include "libp7zip/CPP/Common/MyCom.h"
|
|
#endif
|
|
|
|
class ExtractDelegate;
|
|
|
|
class QLibrary;
|
|
#include <QString>
|
|
#include <QList>
|
|
#include <QMap>
|
|
|
|
struct SevenZipInterface;
|
|
|
|
class MyCodecs;
|
|
|
|
#ifdef Q_OS_UNIX
|
|
class CompressedArchive : public QObject, public ICompressCodecsInfo, public CMyUnknownImp
|
|
#else
|
|
class CompressedArchive : public QObject
|
|
#endif
|
|
{
|
|
Q_OBJECT
|
|
public:
|
|
explicit CompressedArchive(const QString &filePath, QObject *parent = 0);
|
|
~CompressedArchive();
|
|
|
|
#ifdef Q_OS_UNIX
|
|
MY_UNKNOWN_IMP
|
|
|
|
STDMETHOD(GetNumMethods)
|
|
(UInt32 *numMethods);
|
|
STDMETHOD(GetProperty)
|
|
(UInt32 index, PROPID propID, PROPVARIANT *value);
|
|
STDMETHOD(CreateDecoder)
|
|
(UInt32 index, const GUID *iid, void **coder);
|
|
STDMETHOD(CreateEncoder)
|
|
(UInt32 index, const GUID *iid, void **coder);
|
|
|
|
bool isRar;
|
|
#endif
|
|
|
|
signals:
|
|
|
|
public slots:
|
|
int getNumFiles();
|
|
int getNumEntries();
|
|
QList<QByteArray> getAllData(const QVector<quint32> &indexes, ExtractDelegate *delegate = 0);
|
|
QByteArray getRawDataAtIndex(int index);
|
|
QList<QString> getFileNames();
|
|
bool isValid();
|
|
bool toolsLoaded();
|
|
|
|
private:
|
|
SevenZipInterface *szInterface;
|
|
|
|
QLibrary *sevenzLib;
|
|
#ifdef Q_OS_UNIX
|
|
QLibrary *rarLib;
|
|
#endif
|
|
bool loadFunctions();
|
|
bool tools;
|
|
bool valid;
|
|
QList<QString> files;
|
|
QList<qint32> offsets;
|
|
QMap<qint32, qint32> indexesToPages;
|
|
|
|
void setupFilesNames();
|
|
QVector<quint32> translateIndexes(const QVector<quint32> &indexes);
|
|
|
|
friend class MyCodecs;
|
|
};
|
|
|
|
#endif // COMPRESSED_ARCHIVE_H
|