#ifndef COMPRESSED_ARCHIVE_H
#define COMPRESSED_ARCHIVE_H

#include <QObject>
#include "extract_delegate.h"
extern "C" {
#include <unarr.h>
}

class CompressedArchive : public QObject
{
    Q_OBJECT
public:
    explicit CompressedArchive(const QString &filePath, QObject *parent = 0);
    ~CompressedArchive();

signals:

public slots:
    int getNumFiles();
    void getAllData(const QVector<quint32> &indexes, ExtractDelegate *delegate = 0);
    QByteArray getRawDataAtIndex(int index);
    QList<QString> getFileNames();
    bool isValid();
    bool toolsLoaded();

private:
    bool tools;
    bool valid;
    QList<QString> fileNames;
    int numFiles;
    ar_archive *ar;
    ar_stream *stream;
    QList<qint64> offsets;
};

#endif // COMPRESSED_ARCHIVE_H
